ryotankの備考録日記

趣味の電子工作についての備考録などなど

電子工作作業報告書管理アプリその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//exec/」を
設定している事。
内容確認ページにてボタンが押された時「ewrn/」に
GET/POSTを行い、views.exec_ajaxで処理を実行する

次回は各データ入力画面には、記入例を載せてないので、入力時に
どんな事、データを入れるか悩むのを防ぐ為、"入力のヒント"を表示するように
編集するかな