Menu
CoddyTech

URL có tên

Thuộc phần Kiến thức cơ bản về Django trong hành trình Django của Coddy. Bài học 10 trên 23.

Trang chủ nên liên kết đến trang Giới thiệu. Nhập "/about/" vào mọi liên kết sẽ hoạt động cho đến khi địa chỉ thay đổi, rồi mọi liên kết đều hỏng. Thay vào đó, hãy đặt tên cho từng tuyến đường và tạo địa chỉ từ tên đó. Tệp urls.py của ứng dụng shop:

app_name = "shop"

urlpatterns = [
    path("cart/", views.cart, name="cart"),
    path("products/<slug:slug>/", views.product, name="product"),
]

app_name đặt các tên trong một không gian tên: tên đầy đủ là "shop:cart", nhờ đó hai ứng dụng có thể cùng có một home. reverse() chuyển tên thành địa chỉ. Khi ứng dụng shop được thêm vào dưới shop/:

from django.urls import reverse

reverse("shop:cart")                    # "/shop/cart/"
reverse("shop:product", args=["mug"])   # "/shop/products/mug/"

Gọi reverse() bên trong một view. Ở đầu tệp views.py, hàm này chạy trước khi các tuyến đường tồn tại.

Đổi "cart/" thành "basket/" và mọi địa chỉ được tạo từ tên đó cũng sẽ thay đổi theo.

challenge icon

Thử thách

Dễ

Liên kết trang chủ với trang Giới thiệu bằng tên.

  1. Trong menu/urls.py, đặt app_name thành "menu" và đặt tên cho từng tuyến theo tên hàm xử lý: home, about, hours, contact, table, drink, order.
  2. Trong menu/views.py, nhập reverse từ django.urls. Trong home, thêm một liên kết About us có href là reverse("menu:about").

Nhấp vào About us: trang Giới thiệu sẽ mở ra.

Tự làm thử

from django.urls import path

from . import views

urlpatterns = [
    path("", views.home),
    path("about/", views.about),
    path("hours/", views.hours),
    path("contact/", views.contact),
    path("table/<int:number>/", views.table),
    path("drinks/<slug:slug>/", views.drink),
    path("order/", views.order),
]
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản về Django

Tự luyện tập: Playground Django