Djangoには新しいアプリケーションを作成するときの雛形が用意されている。
それを用いて、アプリケーションのディレクトリーを作成し、URLディスパッチを出来るようにするところまでをまとめる。
まず、Djangoのある仮想環境へ移動する。ターミナルやコマンドプロンプト(cmp)で実行する。
Anacondaを使用している場合は、以下の方法を用いる。
#仮想環境の構築
conda create -n djangoenv python=3.10 #djangoenvは仮想環境名、pythonのバージョン指定がなければ記入は不要。
#仮想環境の有効化
conda activate djangoenv#仮想環境名
#仮想環境の無効化
conda deactivate
#作成した仮想環境の一覧
conda env list
#作成した仮想環境の削除
conda remove -n djangoenv --all #djangoenvは仮想環境名
そして、Djangoの実行できる環境を有効化したら、以下のコマンドでアプリケーションの雛形を作成する。
django-admin startproject FirstProject#FirstProjectはプロジェクトの名前
cd FirstProject #cmpの実行レベルを作成したプロジェクトに合わせる。不要な場合もある。
manage.py runserver
最後のコードを実行すると、プロジェクトのURLが発行される。
そして、またcmpで以下のコードを入力すると、appファイルを作成できる。
python manage.py startapp first-app#アプリケーションの名前
こちらを入力すると、プロジェクト内部にappファイルを作成することが出来る。
ここから、文字を記入したページにURLディスパッチを実行する方法をまとめていく。
作成したアプリケーションをプロジェクト内のsetting.pyに追記する。
INSTALLED_APPS = [
"Django.hello.hello.something", #コンマを付ける。
"first-app" #作成したアプリケーションの名前を入力する。
その後、appファイル内のViews.pyに以下のコードを追加する。
このフォルダに書かれた関数の呼び出しがurls.pyからかかると、returnで書かれた内容がHttpResponseとして返される。
この場合、indexが呼び出されたら、ページに"Something"とでかでかと表示される。
from django.http import HttpResponse
def index(request):
return HttpResponse("<h1>Something</h1>") #リクエストが来たらこの値をレスポンスとして返す
そして、appファイル内にurls.pyを作成し、以下の内容を記述する。
これを用いて、URLが指定されたとき、それに対応するページを実行する。
この場合、URLの末尾に何もついていないとき、viewsで作成したindexの関数が呼び出される。
from django.urls import path
from . import views
app_name = 'first-app' #appの名前空間を表す。(画面の遷移先を指定する場合に用いる)
urlpatterns = [
path('', views.index, name='index') #/でアクセスした場合にviewsファイル内のindex関数を返す
その後、プロジェクトディレクトリ内のurls.pyにappフォルダ内のurls.pyのパスを通す。
すでにある記述に繋げる形で2行目のimportのあとのincludeとurlpatternsのpathの2行目の記述を追加していく。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('firstapp/', include('first-app.urls')) #最初の引数はURLにつくものだから何でも良い
]
こうすると、最初にmanage.py runserverで発行したURLに/firstapp/をつけると以下のような表示ができる。
以上でDjangoでページを表示させ、URLディスパッチを作成するところまでのまとめでした。
補足 マイグレーションのやり方も記しておく。
python manage.py migrate
これを入力するとマイグレーションが実行される。
詳細はまだ理解していないので説明できないが、DBの種類に合わせてsetting.pyのDATABASEを書きかえる必要がある。
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR/ 'db.sqlite3'
}
}
#ENGINE: 利用するデータベース
#NAME: DATABASEの名前
デフォルトではSQLite3で有効化されている。SQLite以外では接続先のホスト名、パスワード、ユーザー名なども合わせて記載が必要。