電子工作作業報告書管理アプリその30
Djangoに関する事
どのページを表示するかを記載したurls.pyを作っていく
urlsの流れとしては、
1.データ入力画面1を表示して入力画面2、入力画面3へと移る
2.入力画面3の入力が終われば内容確認ページを表示する
3.確認ページ内で"報告する"というボタンをクリックすると同画面で
GET/POST結果の表示をする
Ajax処理を入れる
そもそもAjax処理とは、サーバー側との通信、データ交換、
ページの更新を画面遷移なしで行えるもの
上記を踏まえたコードを構築していくs
from django.urls import path from . import views app_name = 'ewrn' urlpatterns = [ #データ入力画面1 path('', viewsDataView.as_view(), name = 'data1'), #データ入力画面2 path('ewrn/<int:pk>', viewsData2View.as_view(), name = 'data2'), #データ入力画面3 path('ewrn/<int:pk>', viewsData3View.as_view(), name = 'data3'), #内容確認ページ path('ewrn/<int:pk>', viewsContent_checkView.as_view(), name = 'content_check'), #Ajax処理 path("ewrn/<int:pk>/exec/", view.exec_ajax, name ='exec'), ]
各変数の解説
urlpatternsという変数は、リスト型で「URL」と実行する「関数またはクラス」を
指定する。つまりurlpatternsのリスト内にルーティングを記載する
要はブラウザから送られたHTTPリクエストのURL、urlpatternsに格納された
ルーティングを順番に比較していく
urlpatternsに指定するURLや関数はpath関数を使用する
path関数とは、
path(URL, 関数またはクラス, name='URL名称')
第一引数はURLを指定し、第二引数は関数を指定する。
HTTPリクエストからリクエストされたURLに対応する関数または
クラスが実行される
第二引数:関数またはクラス
path関数の第二引数にはviews.pyの関数やクラスを指定する
#関数ベースビューの場合 path(URL, views.関数名, name='URL名称')
#クラスベースビューの場合 path(URL, views.クラス名.as_view(), name='URL名称')
name引数でURLの名称を指定出来る。
これを指定するとテンプレート内やviews.pyでその名称でURLを指定出来るようになる
nameで指定したURL名称は主に3つ
・テンプレート:aタグのhref属性で指定
・views.py:redirectで使用
・views.py:reverseで使用
例としてテンプレートのaタグで使用した場合は以下のようになる
#name引数で指定したURL名称の使用例 name= 'office54'の場合 <a href="{% url 'office54' %}">
aタグのhref属性に{% url 'URL名称' %} として指定する。
name引数を使うメリットとして、指定が簡単である
そして最大のメリットはURLを変更してもname引数を変更していなければ、
テンプレートやviews.py側を変更する必要が無い
include関数
path関数の第二引数にinclude関数を使う事が出来る
include関数により、アプリケーション内のurls.pyを連結出来る
引数にはアプリケーションフォルダ内のurls.pyを指定する
path(URL, include(アプリケーションフォルダ名.urls))
include関数は、主にプロジェクト内のurls.pyに使用する
#プロジェクトフォルダのurls.py path('', include('five.urls'))
#アプリケーションフォルダのurls.py path('', views.index, name='index'), path('test/', views.test, name ='test'),
上のプロジェクトフォルダではinclude関数で
アプリケーションfive内のurls.pyを指定している
上記のAjax処理コードで重要になってくるのは
Ajax処理用のパス「ewrn/
設定している事。
内容確認ページにてボタンが押された時「ewrn/
GET/POSTを行い、views.exec_ajaxで処理を実行する
次回は各データ入力画面には、記入例を載せてないので、入力時に
どんな事、データを入れるか悩むのを防ぐ為、"入力のヒント"を表示するように
編集するかな