views.py
from django.contrib import admin from django.urls import path, include urlpatterns = [ path("admin/", admin.site.urls), path('test/', include(('test2.urls', 'test2'),namespace='test2')), ]
from django.contrib import admin from django.urls importるー path from . import views urlpatterns = [ path('test_page',views.TestView.as_view(), name = 'test_view'), ]
from django.shortcuts import render from django.views.generic import View from django.http import JsonResponse class TestView(View): def get(self, request): return render(request, 'test.html') def post(self, request): return JsonResponse({'test': 'test_value'})
views.pyでは、フロントエンドに返す値の整形を行います。
上の例では、settings.pyのTEMPLATESの'DIRS'が[os.path.join(BASE_DIR, 'templates')]となっていれば、
ルート/test/test_pageにアクセス時にtemplatesフォルダのtest.htmlがブラウザに表示されるようになっています。
view.pyで作成するクラスはViewを継承させてください(ListViewなどを継承させても間接的に継承される)
urls.pyでルーティングされ、対象のクラスに処理が来ると、HTTPリクエストメソッド(getやpostなど)によって使用されるメソッドが切り替えられます。
getはデータをもらうだけの通常のアクセス
postはテンプレート側からもデータを渡す必要があるとき
putはデータベースなどのデータの更新時
deleteはデータベースなどのデータ削除時
に使用されるHTTPリクエストメソッドで、継承しているViewクラスにはget、post、put、deleteメソッドが用意されており、対象のメソッドをオーバーライド(クラス内で新たに定義して上書き)することで使用されます。
またそれらの第1引数はself(自クラスのこと)、第2引数はrequest(テンプレート側から渡されるデータ)としてください。
通常アクセス時にはgetメソッドが使用されます。
とすることでブラウザには返されたHTMLファイルが表示されます。
render()の第3引数の辞書型はフロントエンドでキーを変数名として、値を使用することができます。
フロントエンドに変数を返す必要がないときはrender()の第3引数は未記入で問題ありません。
通常の画面表示のみの時はgetメソッドを記入するだけで問題ありません。
Ajaxなどで、テンプレート側からpostメソッドでデータを受け取ったときはpostメソッドが使用されます。
と記入することで非同期通信を行うことができます。
postメソッドなどで画面を遷移させたいときは
の形式で記入することで遷移させることができます。
上の例では、settings.pyのTEMPLATESの'DIRS'が[os.path.join(BASE_DIR, 'templates')]となっていれば、
ルート/test/test_pageにアクセス時にtemplatesフォルダのtest.htmlがブラウザに表示されるようになっています。
view.pyで作成するクラスはViewを継承させてください(ListViewなどを継承させても間接的に継承される)
urls.pyでルーティングされ、対象のクラスに処理が来ると、HTTPリクエストメソッド(getやpostなど)によって使用されるメソッドが切り替えられます。
getはデータをもらうだけの通常のアクセス
postはテンプレート側からもデータを渡す必要があるとき
putはデータベースなどのデータの更新時
deleteはデータベースなどのデータ削除時
に使用されるHTTPリクエストメソッドで、継承しているViewクラスにはget、post、put、deleteメソッドが用意されており、対象のメソッドをオーバーライド(クラス内で新たに定義して上書き)することで使用されます。
またそれらの第1引数はself(自クラスのこと)、第2引数はrequest(テンプレート側から渡されるデータ)としてください。
通常アクセス時にはgetメソッドが使用されます。
return render(request, 'フロントエンドに返すテンプレート', フロントエンドに返したい変数などがあれば辞書型で)
とすることでブラウザには返されたHTMLファイルが表示されます。
render()の第3引数の辞書型はフロントエンドでキーを変数名として、値を使用することができます。
フロントエンドに変数を返す必要がないときはrender()の第3引数は未記入で問題ありません。
通常の画面表示のみの時はgetメソッドを記入するだけで問題ありません。
Ajaxなどで、テンプレート側からpostメソッドでデータを受け取ったときはpostメソッドが使用されます。
JsonResponse({フロントエンドに返すデータを辞書型で記入})
と記入することで非同期通信を行うことができます。
postメソッドなどで画面を遷移させたいときは
return redirect(移動したいページのurls.pyのname)
の形式で記入することで遷移させることができます。