👋

初めてのDjango環境構築(Meta Backend Developper Certificate)

2024/09/27に公開

最近CourseraMeta Backend Developper Certificateと言うプログラムに参加しているのですが、そこでDjangoを使ってバックエンドについて学んでいます。ここでは自分のメモに近いのですが、Djangoとして最低限のWebで何か表示できるところまでをまとめています。

なお、普段はFlutterでの開発がメインであり、バックエンドは詳しくありません。ご了承ください。

Courseraとは

学習プラットフォームです。大学の講義などを受講できるのですが、GoogleやMeta、IBMなど企業によるものもあり、コースを終了すると修了証がもらえます。なお、内容は全部英語ですが、適宜AI使って対処しています。

Coursera及びMeta Backend Developper Certificateについてはこちらです。
https://www.coursera.org/professional-certificates/meta-back-end-developer

Djangoとは

私は長いこと「ディージャンゴ」と読んでいましたが、「ジャンゴ」が正解なようです。

DjangoはPythonのフルスタックフレームワークです。DjangoだけでWebアプリケーションが作れます。こんなことができます。

  • Webページ作成
  • 管理画面(コーディングせずとも備わっています)
  • ログイン画面(コーディングせずとも備わっています)
  • DB用のModel作成

例えばコース内で作成したLittle Lemon Restaurantと言うレストランのアプリでは、APIを使わずに予約などを受け付けDBを更新。それを管理画面で確認するまたはDBを操作する、といったことができます。

全てをDjango内で完結できる、と言うのは感心しました。

https://x.com/osanaiks10512/status/1839528028021633524

この記事でのゴール

すごく地味で申し訳ないのですが、記事が長くなりました。とりあえずhogehogeとか文字をブラウザ上で表示できるところまでをゴールにします。

私の作業環境

M1Pro:MacbookPro(2021)
python:Python3.12(Homebrew経由でインストール)

Djangoで環境構築とサーバー起動

個人的に一番厄介なのが環境構築です。PythonのウインストールはMacの場合直接インストールしている場合とhomebrew経由でのインストールがあります。

私の環境はhomebrew経由でしたが、レッスンの中では直接インストールしたものを使用している前提でしたので、自分で悪戦苦闘しながら対処しました。

virtualenvで仮想環境構築

まず仮想環境を構築するためにvirtualenv(venv)をインストールする。

pip3 install virtualenv

homebrewでインストールしたPythonを使っているなら、下記のコマンドです。

terminal
brew install virtualenv

次に設定仮想環境を構築します。

terminal
virtualenv {任意のディレクトリ名}

作った仮想環境を適用します。

terminal
source  {任意のディレクトリ名}/bin/activate

なお、仮想環境を終了する場合はこの通りです。

terminal
diactivate

Djangoのプロジェクト作成

準備が整ったらprojectとappを作成します。
ここでは一つのprojectと一つのappを作成して基本的な構造を構築していきます。

まずは仮想環境下の状態でDjangoをインストールします。

terminal
pip3 install django

次に、Djangoのprojectを作成します。

terminal
django-admin startproject {任意のproject名}

projectができたら、projectディレクトリに移動したのち、appを作成します。

terminal
cd {任意のproject名}
python3 manage.py staratapp {任意のapp名}

DBの設定をします。なくても良いかもしれません。

terminal
python3 manage.py migration

いよいよサーバー起動です。

terminal
python3 manage.py runserver

http://127.0.0.1:8000/とローカル用のパスがターミナル上に表示されます。
これをクリックすると、ブラウザ上で次の画面が表示されると思います。

ここまでで一旦Djangoの起動に成功です。Flutteと比べるとterminalも結構触れるし抵抗がありましたが、何度かやっていると慣れていきました。

Djangoでルーティング

次に画面を表示するためのルーティングを行います。
ゴールはこの画面表示

app内の実装

app内のviews.pyにメソッドを書きます。ここでは、該当のpathの際にHtttpのResponseとしてhogehogeを表示する、と言うことです。

project/app/views.py
from django.urls import HttpResponse

def home(response):
    return HttpResponse('hogehoge')

app内にurls.pyを作ります。ルーティングを行います。

project/app/urls.py
from django.urls import path
from . import views # 同じディレクトリに存在するmoduleなのでfrom .

urlpatterns = [
    path('', views.home, name="home"),  
]

project内の実装

project内のurls.pyにあるurlpattersに、app.urlsを追加します。
これでpathが''の場合、つまりURLの最後がadmin/でない限り、urlpatternsとしては、app内のurls.pyを参照するよ、と言うことになります。

project/project/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('app.urls')), # 追加
]

project内のsettings.pyのINSTALLED_APPSにappの情報を追加します。

project/project/setting.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp.apps.MyappConfig', # 追加
]

サーバー起動

最後に親のprojectでコマンドを叩きserverを起動。アクセスしてUIを確認します。

terminal
python manage.py runserver

出でくるlocalhostのリンクをクリックすれば、ゴールの画面が表示されます。

まとめ

長くて集中力切れました。。

この記事を見ている人は、どちらかというとDjangoでの最初の立ち上げに苦戦している人とかかなと思います。私の記事で理解して作業捗る、と言うほどのことにはならないと思いますが、つまづいている中でちょっとしたヒントとかにつながれば良いかなと思います。

Discussion