##この記事の趣旨
以前はバリバリにDjangoを触っていたけど、最近触れてない。
基本はわかってる。環境構築もしてる。
久しぶりに仕事で触らんといけなくなったけど、基本的なことを忘れてしまった。
そんな方に向けての記事です。
##プロジェクトのスタート
作業フォルダまで移動し、ターミナル画面で以下のコマンドを打ちます。(Mac,Linux)
$ django-admin startproject XXXX
##プロジェクト内でappを作成する
プロジェクトフォルダの直下(manage.pyがあるフォルダ)まで移動し、
以下のコマンドを打ちます。(mac,Linux)
$ python3 manage.py startapp YYYY
##基本的なセッティング
プロジェクトを初めて記述する時は以下の点を修正します。
・INSTALLED_APPS
・LANGUAGE_CODE
・TIME_ZONE
INSTALLED_APPS = [
'django.contrib.admin', #デフォルトで記載されてる
'django.contrib.auth', #デフォルトで記載されてる
'django.contrib.contenttypes', #デフォルトで記載されてる
'django.contrib.sessions', #デフォルトで記載されてる
'django.contrib.messages', #デフォルトで記載されてる
'django.contrib.staticfiles', #デフォルトで記載されてる
'YYYY' #"manage.py startapp"で作成したappの名前を指定
]
LANGUAGE_CODE='ja'
TIME_ZONE='Asia/Tokyo'
##開発サーバー起動
プロジェクトフォルダの直下(manage.pyがあるフォルダ)まで移動し、
以下のコマンドを打ちます。(mac,Linux)
$ python3 manage.py runserver
##urls.pyの役割
ルーティングを担当。
プロジェクトのurls.pyでは各appのurls.pyへ役割を渡してあげる。
(プロジェクトのurls.pyではappのルーティングを記述しない)
from django.conf.urls import include
urlpatterns = [
path('admin/',admin.site.urls), #管理者用ページへのルーティング(Djangoの機能)
path('',include('YYYY.urls')), #各appのurlsへ役割を渡してあげる
]
from . import views #後述するviews.pyをインポートします。
app_name = 'YYYY'
urlpatterns = [
path('example/exmaple/',views.example,name='exmaple'),
]
path()の説明
●第一引数はルーティングするURL。
上の例だと、http://xxxxx.com/example/emample/にルーティングされる。
indexの場合は第一引数を指定しない。例:path('',views.~~~~,name=''),
●第二引数は、後述するviews.pyで指定する「関数名」か「class名」を指定する。classで指定するときは、.as_viewが必要。
上の例では、views.pyの中のexampleという関数を実行するよう指定している。
●第三引数でこのルーティングの名前をつける。
##views.pyの役割
レンダリングを担当。ロジックのメインとなる部分。
@require_POST
def example(request):
return TemplateResponse(request, 'example/example.html',{'text': text})
説明
●@require_POSTとは
@require_POSTでHTTPメソッドがPOSTの時のみという指定ができます。
@require_POSTを指定しない場合は、他のHTTPメソッドでも関数が実行されます。●レンダリングの関数
上の例ではreturnでTemplateResponseを指定していますが、これ以外にも
HttpResponseRedirect
redirect
render
などで指定することができます。(違いが気になる方は各自調べてください)●requestとは
Djangoが扱う変数です。
変数の中はリクエストのあったHTTPメソッドなど(POSTやGET)が入っています。
決まりごととして覚えておく。●TemplateResponseの引数
第二引数でレンダリングするhtml(templatesフォルダに入ってるhtml)を指定。
第三引数ではhtmlに渡す辞書型の変数を指定します。
上の例では一つのデータを渡してますが、複数指定する場合は辞書型の形で記述します。
今日のところは以上。