Menu
CoddyTech

路径转换器

本课属于 Coddy Django 学习旅程的“Django 基础”单元。第 6 课,共 23 课。

咖啡馆里的每张桌子上都有一个 QR 码,每个 QR 码都需要自己的页面。当路由的一部分是路径转换器时,一个路由就能匹配它们。日历可能会用到两个:

path("calendar/<int:year>/<int:month>/", views.calendar),

尖括号中的部分是一个转换器:类型、冒号、名称。int 匹配整数,并将其转换为 Python int。视图会将每个值作为对应名称的参数接收:

def calendar(request, year, month):
    return HttpResponse(f"<h2>{month} / {year}</h2>")

对于 /calendar/2026/3/,Django 会调用 calendar(request, year=2026, month=3)。如果转换器无法匹配某个地址,例如 /calendar/next/3/,就会返回 404 页面未找到,视图也不会运行。

challenge icon

挑战

简单

为每张表单独创建一个页面。

  1. 在 menu/urls.py 中,添加一条路由,使其匹配 /table/5/、/table/12/ 和其他任意整数。将它指向 views.table。
  2. 在 menu/views.py 中,编写一个视图 table。它的第二个参数使用转换器的名称。对于表 5,它返回 <h1>Table 5</h1>。

打开 /table/12/:你会看到表 12。

亲手试试

from django.urls import path

from . import views

urlpatterns = [
    path("", views.home),
    path("about/", views.about),
    path("hours/", views.hours),
    path("contact/", views.contact),
]

Django 基础中的所有课

自己练习: Django 在线编辑器