Để làm rõ lời giải thích camflan của, chúng ta hãy giả sử bạn có
- sự cai trị
url(regex=r'^user/(?P<username>\w{1,50})/$', view='views.profile_page')
- một trong yêu cầu đến cho quy tắc phối
http://domain/user/thaiyoshi/?message=Hi
URL sẽ bắt các phần của URL đường (ở đây "user/thaiyoshi/"
) và chuyển chúng đến chức năng xem cùng với đối tượng yêu cầu.
Chuỗi truy vấn (ở đây message=Hi
) được phân tích cú pháp và tham số được lưu trữ dưới dạng QueryDict
trong request.GET
. Không có kết hợp hoặc xử lý thêm cho các tham số HTTP GET được thực hiện.
xem Chức năng này sẽ sử dụng cả hai phần được chiết xuất từ đường dẫn URL và một tham số truy vấn:
def profile_page(request, username=None):
user = User.objects.get(username=username)
message = request.GET.get('message')
Như một mặt lưu ý, bạn sẽ tìm ra phương thức yêu cầu (trong trường hợp này "GET"
, và cho các hình thức nộp thường là "POST"
) trong request.method
. Trong một số trường hợp, bạn nên kiểm tra xem nó có phù hợp với những gì bạn mong đợi hay không.
Cập nhật: Khi quyết định có nên sử dụng đường dẫn URL hoặc các thông số truy vấn cho chuyển thông tin, sau đây có thể giúp:
- sử dụng đường dẫn URL cho nguồn lực xác định duy nhất, ví dụ
/blog/post/15/
(không phải /blog/posts/?id=15
)
- sử dụng thông số truy vấn để thay đổi cách hiển thị tài nguyên, ví dụ:
/blog/post/15/?show_comments=1
hoặc /blog/posts/2008/?sort_by=date&direction=desc
- để tạo URL thân thiện với con người, tránh sử dụng số ID và sử dụng ví dụ: ngày, danh mục và/hoặc sên:
/blog/post/2008/09/30/django-urls/
Là '? Param =' cách duy nhất Django nhận ra các tham số? Có cách nào để sử dụng URLconf với HTTP.GET không? Tôi muốn làm/param/2. – sutee
Kiểm tra phần thứ hai của câu trả lời của tôi liên quan đến việc thu thập URLconf và regex của bạn. – camflan
Ok. Tôi hiện đang sử dụng phương pháp thứ hai. Có vẻ như họ là những cơ chế riêng biệt, và tôi đang cố gắng pha trộn chúng. Cảm ơn! – sutee