Skip to content
On this page

建立子路由 (urls)

這裡就是應用 app 的子路由設定檔,所以必須在應用 /myapp 資料夾內則建立 urls.py 檔案。建議可以參照主路由 (urls.py) 檔的設定。

坦白講操作過 FastAPI 後,反而會不太習慣 Django 路由的操作。

這裡有一個規範 path('route', view, name, kwargs):

  1. route 子路由,一般寫法 "mypath/",或自定義路由 "mypath/<int:any_id>/"。 官方 Django URL dispatcher
  2. view 這是 views.pyurls.py 連接的方法,所以是取用views.py內的def定義函式。
  3. name 幫 url 命名,方便辨識,可省略。
  4. kwargs 傳遞引數,如果沒有引數,也可省略。

舉例 : path ('mypath/int:any_id', views.def_path, name="mypath", kwargs={"msg":"hi! it's me!"})

DANGER

route 後面一定要加 "/" 斜線,否則 Django 會讀錯誤的風險。

py
from django.urls import path
from . import views
urlpatterns = [
    path("world/", views.hello, name="hello") ]

到這裡設定路由後會變成 http://127.0.0.1:8000/hello/world/,可以看出urls.pymyapp/urls.py參數的顯示順序。

傳送引數 kwargs

如果路由上想要丟給 view 資料,可以用 kwargs

py
urlpatterns = [
    path("world/", views.hello, name="hello",kwargs={"msg":"good!",'x':123}) ]

接收前端丟過來的資料 ( urls.py )

html裡面要指定函式,例如下方就使用method='POST'{% url 'add_item' %}來餵給後端表單資料。

html
<form method='POST' action="{% url 'add_item' %}">
  ....
</form

urls 這裡其實只要指定 views 內的方法即可接收或處理前端丟過來的資料,

py
from django.urls import path
from . import views

urlpatterns = [
  #...
  path('', views.index, name='index'),
  path('keyin/', views.ontable, name='record'),
  # 餵我資料
  path('get_me_data/', views.add_item, name='add_item')
]

DANGER

這裡必須配合 views.py所 def 定義的函式