0
0
Lập trình
Admin Team
Admin Teamtechmely

Làm chủ URL trong Django: Từ Cài đặt đến Định tuyến Động

Đăng vào 1 tháng trước

• 6 phút đọc

Giới thiệu

Trong bài viết trước, chúng ta đã khám phá cách mà Web giao tiếp với Django, từ đó hiểu được cách Django xử lý các yêu cầu và phản hồi. Bây giờ, đã đến lúc xây dựng cầu nối giữa trình duyệt và mã Django của bạn thông qua hệ thống URL.

Trong bài viết này, chúng ta sẽ tập trung vào hệ thống URL của Django, xương sống của cách yêu cầu tìm đường đến các view (một đoạn mã Python). Bạn sẽ học cách thiết lập một dự án Django, khai báo các URL, tổ chức chúng thành các nhóm hợp lý và thậm chí trích xuất thông tin hữu ích từ URL để sử dụng trong các view của bạn.

Thiết lập Django

Chúng ta sẽ từng bước thiết lập dự án Django đầu tiên và chạy nó trên máy tính của bạn.

Bước 1: Cài đặt Python

Django chạy trên Python, vì vậy bước đầu tiên là đảm bảo bạn đã cài đặt Python. Chạy lệnh sau:

Copy
python --version

Nếu chưa cài đặt, bạn có thể truy cập trang web Python và làm theo hướng dẫn để cài đặt Python.

Bước 2: Tạo thư mục dự án

Tiếp theo, chúng ta cần một nơi để đặt công việc của mình. Bạn có thể đặt tên cho dự án theo sở thích của mình. Tôi sẽ dùng tên "mastering-django".

Copy
mkdir mastering-django
cd mastering-django

Bước 3: Cài đặt Django trong môi trường ảo

Sau đó, chúng ta sẽ cài đặt Django vào một môi trường ảo để giữ cho các phụ thuộc của dự án tách biệt với các gói Python đã cài đặt khác trên máy tính của bạn.

Copy
python3 -m venv venv
source venv/bin/activate

Bước 4: Cài đặt Django

Khi môi trường đã hoạt động, hãy cài đặt Django:

Copy
(venv) $ pip install Django

Django đi kèm với một số công cụ mà chúng ta có thể sử dụng để bắt đầu một dự án nhanh chóng. Hãy bắt đầu một dự án Django mới:

Copy
(venv) $ django-admin startproject myproject .

Khi bạn chạy lệnh django-admin startproject myproject ., Django sẽ tạo ra cấu trúc dự án cho bạn. Dưới đây là các tệp chính mà bạn sẽ thấy:

Copy
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

Giải thích các tệp

manage.py: Đây là công cụ điều khiển từ xa của dự án, cho phép bạn:

  • Khởi động máy chủ phát triển
  • Áp dụng các thay đổi cơ sở dữ liệu
  • Tạo ứng dụng
  • Quản lý người dùng (ví dụ: tạo superuser)

Thư mục myproject/: Thư mục này chứa các tệp cấu hình của dự án:

  • init.py: Đánh dấu thư mục là một gói Python, thường rỗng nhưng cho Python biết “đây là mã bạn có thể nhập”.
  • settings.py: Chứa tất cả các cấu hình của dự án — ứng dụng đã cài đặt, cấu hình cơ sở dữ liệu, middleware, template, tệp tĩnh, và nhiều hơn nữa.
  • urls.py: Bản đồ của dự án, liên kết các yêu cầu từ trình duyệt (như /about/ hoặc /blog/) với các view đúng trong mã của bạn.
  • asgi.py: Điểm vào cho các máy chủ ASGI, cho phép Django hỗ trợ các tính năng hiện đại như WebSockets và xử lý bất đồng bộ.
  • wsgi.py: Điểm vào cho các máy chủ WSGI, được sử dụng để chạy các ứng dụng Django trong môi trường sản xuất.

Bước 5: Chạy máy chủ phát triển

Để kiểm tra mọi thứ hoạt động đúng, hãy chạy máy chủ phát triển:

Copy
(venv) $ python manage.py runserver

Mở trình duyệt và truy cập http://127.0.0.1:8000/ để thấy trang chào mừng của Django 🎉. Điều này có nghĩa là dự án của bạn đã hoạt động tốt.

Cấu hình URL trong Django

Mỗi khi bạn gõ một URL vào trình duyệt và nhấn Enter, Django cần biết: yêu cầu này sẽ đi đâu? Đó là lúc cấu hình urls.py phát huy tác dụng. Django sẽ quét danh sách các đường dẫn từ trên xuống dưới. Ngay khi tìm thấy một đường dẫn khớp, nó sẽ dừng tìm kiếm và chuyển hướng yêu cầu đến view tương ứng.

Ví dụ về urls.py

Dưới đây là một ví dụ đơn giản về url.py:

Copy
# myproject/urls.py
from django.urls import path
from application import views

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

Khi bạn truy cập https://www.example.com/about/, Django sẽ khớp với đường dẫn thứ hai và chuyển yêu cầu đến views.about.

Đường dẫn động với bộ chuyển đổi

Thay vì chỉ định các đường dẫn tĩnh, hầu hết các ứng dụng thực tế cần linh hoạt hơn. Ví dụ:

  • URL bài viết có thể bao gồm năm và slug, như /blog/2024/django-rocks/.
  • URL hồ sơ người dùng nên hoạt động cho bất kỳ tên người dùng nào, như /users/stephen/.

Sử dụng bộ chuyển đổi đường dẫn cho phép bạn lấy thông tin từ URL và chuyển thẳng đến view của bạn:

Copy
# myproject/urls.py
from django.urls import path
from application import views

urlpatterns = [
    path("blog/<int:year>/", views.blog_by_year),
    path("users/<str:username>/", views.profile),
]

Đường dẫn biểu thức chính quy

Đôi khi, bạn cần phải sử dụng biểu thức chính quy để khớp chính xác hơn. Ví dụ, nếu bạn chỉ muốn khớp một năm 4 chữ số:

Copy
from django.urls import re_path
from application import views

urlpatterns = [
    re_path(r"^blog/(?P<year>[0-9]{4})/(?P<slug>[\w-]+)/$", views.blog_post),
]

Nhóm các URL liên quan

Khi dự án của bạn phát triển, việc quản lý tất cả các URL trong một tệp duy nhất có thể trở nên lộn xộn. Django khuyến khích bạn để mỗi ứng dụng quản lý các URL riêng của nó và sau đó kết nối chúng trong dự án chính.

Đặt tên cho URL

Việc mã hóa cứng URL ở khắp nơi trong dự án là một rủi ro. Django cho phép bạn đặt tên cho các URL, giúp bạn dễ dàng tham chiếu mà không cần phải sửa đổi từng đường dẫn nếu có sự thay đổi.

Kết luận

Chúng ta đã đi qua toàn bộ hệ thống URL của Django! 🎉

  • Cách Django khớp yêu cầu với urlpatterns.
  • Tại sao thứ tự của các đường dẫn lại quan trọng.
  • Cách sử dụng bộ chuyển đổi để lấy giá trị từ URL.
  • Khi nào nên sử dụng re_path và regex cho việc khớp nâng cao.
  • Cách nhóm các URL theo ứng dụng sử dụng include().
  • Cách đặt tên (và không gian tên) cho các URL giúp dự án linh hoạt hơn.

Hệ thống URL là bản đồ của dự án Django của bạn. Chúng quyết định cách yêu cầu của người dùng tìm đến mã đúng. Khi bạn hiểu hệ thống ánh xạ này, mọi thứ khác trong Django sẽ trở nên logic hơn.

Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu sâu hơn về các view, những đoạn mã Python thực sự tạo ra phản hồi. Đó là lúc chúng ta sẽ thực sự mang đến sức sống cho các URL của mình. 🚀

Câu hỏi thường gặp (FAQ)

1. Django có hỗ trợ URL động không?

Có, Django hỗ trợ thông qua bộ chuyển đổi đường dẫn và biểu thức chính quy.

2. Tôi có thể nhóm các URL theo ứng dụng không?

Có, bạn có thể sử dụng include() để nhóm các URL theo ứng dụng.

3. Tại sao thứ tự của các đường dẫn lại quan trọng?

Django sẽ khớp theo thứ tự từ trên xuống và sẽ chọn đường dẫn đầu tiên khớp mà nó tìm thấy.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào