はじめてのDjangoアプリ作成の実践です。
環境
macOS mojave
python 3.7.1(anaconda)
Django 2.1.2
Djangoのinstall
anacondaなので、ターミナルに以下入力。
conda install django
終わったら、バージョン確認。
python -m django --version
2.1.2
新規プロジェクト作成
プロジェクトを置くところに移動してから、
django-admin startproject mysite
mysiteというフォルダが作成される。
django-admin startproject mysite .
のように最後に「.」をつけると、現在の作業ディレクトリにDjangoをインストールして、という明示的な意味になるそうだ。どちらもでもうまくいく。
startprojectで作成されたディレクトリとファイル
ターミナルから$ tree
で確認できる。
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
manage.py …サイト管理用のスクリプトファイル
setting.py …サイトの設定ファイル
urls.py …urlresolverを使ったURLのパターンリストを含んでいる。
とりあえず、この辺りを押さえておいて、ほかのファイルを削除しないこと。
開発用サーバーの立ち上げ
python manage.py runserver
ブラウザで http://127.0.0.1:8000/
にアクセスすると、
無事にDjangoが稼働しました。
日本語のセッティングにするには、setting.py
を以下のように修正する。
# setting.py
LANGUAGE_CODE = 'ja-AP'
TIME_ZONE = 'Asia/Tokyo'
USE/TZ = Flase
こうしてhttp://127.0.0.1:8000/
にアクセスすると、ちゃんと日本語になりました。
アプリケーションを作る
python manage.py startapp polls
これでpollsというディレクトリ(中身↓)ができる。
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
pollsディレクトリに移動して、ビュー(view)の作成をすすめる。
ビュー(view)の作成
ブラウザで表示されるページをDjangoで作成していきます。
polls/views.pyを編集
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, from Django. You're at the polls index.")
URLの対応付け polls/urls.py
viewを呼ぶだめには、URLの対応付けが必要
URLconfをpollsディレクトリに作る->file urls.pyを作って以下入力。
# polls/urls.py
from django.urls import path
# カレントディレクトリからviewsをインポート
from . import views
# pathのなかの引数3つ、’’はURL(この場合は、localhost:8000/polls)
# 第1引数はURL、第2引数はviewsファイルのindex関数を参照。
urlpatterns =[
path('', views.index, name='index').
]
次はルートのURLconfであるmysite/urls.pyにpolls.urlsモジュールの記述を反映させる。
# mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
対応付け mysite/urls.py
django.url.includeのimportを追加して、url patternsのリストにincludeを追加する。
紐付けができたら、もう一度確認。
localhost:8000/polls/
viewができて、pollsとmysiteのurls.pyでURL対応付けが完了しました。
path関数
path関数は引数を4つとるが、うち、routeとviewは必須で、kwargsとnameは省略可能。