urls.py
urls.pyは、フロントから受け取った内容に応じてルーティング(どのアプリケーションのviews.py内のどのクラスで処理をおこなうのか)を選定するクラスとなっています。
プロジェクト作成時にできたフォルダのurls.pyを開くと、
となっていると思います。
これはルート(ローカル環境だとhttp://127.0.0.1:8000)/admin/にアクセスするとデータベースの管理者ページが開かれるという内容になっています。
新たにルーティングは、
の形式で追加することができます。
,区切りで何個でも追加することができるので大規模なアプリケーションでも対応可能となっています。
また、別ファイルのurls.pyを読み込むときは
の形式で記入します。
例)
アプリケーション作成時にできたフォルダのurls.py
作成したアプリケーションのurls.py(例では'test_applicationとしています。)
このようにすると、ルート/test/test_pageにアクセスするとtest_applicationフォルダのviews.pyのTestViewクラスが動作します。(まだTestViewkクラスを作成していないため現状ではエラーが出ます。)
また、
の形式で記入すると、test_page/test/1のようにアクセスするとTestViewクラスに対して変数test_stringとしてtestを、変数test_intとして1を渡すことができます。
str、intは型と呼ばれるもので、strは文字列、intは整数を指します。
プロジェクト作成時にできたフォルダのurls.pyを開くと、
from django.contrib import admin
from django.urls import path
urlpatterns = [
path("admin/", admin.site.urls),
]
from django.urls import path
urlpatterns = [
path("admin/", admin.site.urls),
]
となっていると思います。
これはルート(ローカル環境だとhttp://127.0.0.1:8000)/admin/にアクセスするとデータベースの管理者ページが開かれるという内容になっています。
新たにルーティングは、
urlpatterns = [
path("admin/", admin.site.urls),
path('ルートからの相対パス',views.使用するviews内のクラス名.as_view(), name = 'テンプレートから呼び出すときの名称'),
]
path("admin/", admin.site.urls),
path('ルートからの相対パス',views.使用するviews内のクラス名.as_view(), name = 'テンプレートから呼び出すときの名称'),
]
の形式で追加することができます。
,区切りで何個でも追加することができるので大規模なアプリケーションでも対応可能となっています。
また、別ファイルのurls.pyを読み込むときは
path('ルートからの相対パス/', include(('読み込むurls.pyのあるアプリケーション名.urls', '読み込み時の名称),namespace='読み込み時の名称')),
の形式で記入します。
例)
アプリケーション作成時にできたフォルダのurls.py
from django.contrib import admin
from django.urls import path
urlpatterns = [
path("admin/", admin.site.urls),
path('test/', include(('test_application.urls', 'test_application'),namespace='test_application')),
]
from django.urls import path
urlpatterns = [
path("admin/", admin.site.urls),
path('test/', include(('test_application.urls', 'test_application'),namespace='test_application')),
]
作成したアプリケーションのurls.py(例では'test_applicationとしています。)
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.urls import path
from . import views
urlpatterns = [
path('test_page',views.TestView.as_view(), name = 'test_view'),
]
このようにすると、ルート/test/test_pageにアクセスするとtest_applicationフォルダのviews.pyのTestViewクラスが動作します。(まだTestViewkクラスを作成していないため現状ではエラーが出ます。)
また、
path('test_page/<str:test_string>/<int:test_int>/', views.TestView.as_view(), name='test_view'),
の形式で記入すると、test_page/test/1のようにアクセスするとTestViewクラスに対して変数test_stringとしてtestを、変数test_intとして1を渡すことができます。
str、intは型と呼ばれるもので、strは文字列、intは整数を指します。