前回、myproject管理フォルダ内のurls.pyを編集しましたが、今回は
car_motorbikeアプリケーションフォルダ直下に、同じくurls.pyを新規作成して、下記スクリプトを書きます。
Contents
car_motorbike/urls.py 新規作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from django.urls import path # 追加モジュール 今回は同じ階層にある # さらにアプリケーションと同じ階層(.)なので viewsは被らない。 # よって、基本構文で良い from . import views app_name = 'carbike' # 追加した # urlパターンをリストで作っておく urlpatterns = [ path('', views.index, name='index'), # predictアドレス 後ほどviewsにpredictメソドを定義するために # views.py へ def predict(): を追加する path('predict/', views.predict, name='predict'), ] |
1.当該スクリプトで使用するモジュールであるviews.py は 当該urls.pyと同層になるので
from . import views
という不思議なインポート記述になります。
viewsモジュールはまだ作成していませんので実行すると当然エラーになりますが、あとで作成しますので心配いりません。
2.そして、画像を入力したときにvvc16_predct.pyを走らせて予測結果を返す画面である predict画面を定義します。
urlpatternsリストにリスト要素として
path(‘predict/’, views.predict, name=’predict’)
を追加します。これで urlのツリー構造として /carbike/predict が定義されたことになります。
views.predictメソドはこれから作成しなければなりませんので、現時点ではエラーが出ます。
3.なお、このcar_motorbike/urls.pyスクリプトは myproject/urls.py から呼び出されるものなので、これから myproject/urls.py の方を改良していきます。
ルーティングというやつです。
myproject/urls.py 編集
ではここから car_motorbike/urls.py へルートをつなげていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from django.contrib import admin # includeメソドを追加で読み込む from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 追加urlパターン carbikeというフォルダを見に来たら、carbike.indexを呼び出す # path('carbike/', carbike.index), # 追加urlパターン carbikeというフォルダを見に来たら、 # car_motorbike.urls.pyの中にあるルーティングを読みに行く path('carbike/', include('car_motorbike.urls')), ] |
1.include関数を新たにインポートして 、先程作成した car_mortorbike/urls.pyを参照するようリストurlpatternsにリスト要素としてpath(‘carbike/’, include(‘car_motorbike.urls’))を追加します。
2.これで、ブラウザ上のurl指定に/carbikeが追加されたとき、car_motorbike.urlsスクリプトを見に行くことになります。
car_motorbike/views.py の編集
先程、car_motorbike/urls.py 内で views.predictメソドを記述しましたが、それの実体をここで定義します。とりあえずルーティングが正しく行われて表示されるか確認したいので、実行内容としてはテキストを出力するだけの最低限にしてテストしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from django.shortcuts import render # 追加モジュール from django.http import HttpResponse def index(request): # webサイトのindex.html に相当する部分 # 仮のリターンを作っておく return HttpResponse('hello_world') def predict(request): # webサイトのpredict.html に相当する部分 # 仮のリターンを作っておく return HttpResponse('show predictions here') |
動作チェック
では python manage.py runserver して ブラウザで動作チェックをしましょう。
1.http://127.0.0.1:8000/ を入力すると
>[21/Sep/2019 15:53:08] “GET / HTTP/1.1” 404 2032
トップページは作っていませんから、404エラーで問題ありません。
2.http://127.0.0.1:8000/carbike を入力すると
>[21/Sep/2019 15:53:17] “GET /carbike/ HTTP/1.1” 200 11
200と出ていますのでちゃんと認識しています。
3.http://127.0.0.1:8000/carbike/predict
>[21/Sep/2019 15:53:30] “GET /carbike/predict/ HTTP/1.1” 200 21
と 200が帰ってくるのでこちらも正常に動作しています。
次回
Web Application: 第10回 HTMLでかっこよくする
Keita N
最新記事 by Keita N (全て見る)
- 2024/1/13 ビットコインETFの取引開始:新たな時代の幕開け - 2024年1月13日
- 2024/1/5 日本ビジネスにおける変革の必要性とその方向性 - 2024年1月6日
- 2024/1/3 アメリカ債権ETFの見通しと最新動向 - 2024年1月3日