市民进城后,第一件事不是办业务,而是先找到门牌。
这就是 URL 路由。
先给 permits 部门单独建一个 urls.py:
from django.urls import path
from . import views
app_name = "permits"
urlpatterns = [
path("", views.index, name="index"),
path("<int:pk>/", views.detail, name="detail"),
path("create/", views.create, name="create"),
]再把它接入总城区路由:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("admin/", admin.site.urls),
path("permits/", include("permits.urls")),
]路由匹配过程可以理解成:
请求 /permits/18/
│
▼
总调度看见 "permits/"
│
▼
转给 permits.urls
│
▼
继续匹配 "<int:pk>/"
│
▼
交给 views.detail(request, pk=18)这里有两个工程习惯非常重要。
第一,路由一定命名:
name="detail"name="create"
因为你后面应该通过名字反查 URL,而不是到处硬编码路径。
模板里这样写:
<a href="{% url 'permits:detail' permit.pk %}">查看详情</a>Python 里这样写:
from django.urls import reverse
reverse("permits:detail", kwargs={"pk": 18})第二,部门级路由要分文件管理。
不要把整个行政城区所有道路都堆在总 urls.py,那样几个月后就会像一张没分区的旧城地图。