Câu trả lời:
Không, bởi vì các tham số GET không phải là một phần của URL.
Chỉ cần thêm chúng vào cuối:
<a href="{% url myview %}?office=foobar">
Đối với Django 1.5+
<a href="{% url 'myview' %}?office=foobar">
example.com/myview/?office=foobar
thay vì example.com/myview?office=foobar
?
Một cách để trộn các thông số hiện tại với một thông số mới:
{% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }}
Sửa đổi cài đặt của bạn để có biến yêu cầu:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)
Sử dụng urlencode
nếu đối số là một biến
<a href="{% url 'myview' %}?office={{ some_var | urlencode }}">
hoặc các ký tự đặc biệt khác như dấu cách có thể phá vỡ URL của bạn.
Tài liệu: https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#urlencode
some_var
biến trả về trống trong href nhưng được hiển thị sẽ được lấp đầy nếu được sử dụng ở nơi khác trong mẫu. v2.1
Đầu tiên, một câu trả lời ngớ ngẩn:
{% url my-view-name %}?office=foobar
Một nhà cảm xạ nghiêm túc: Không, bạn không thể. Trình phân giải URL của Django chỉ khớp với phần đường dẫn của URL, do đó {% url %}
thẻ chỉ có thể đảo ngược phần đó của URL.
Thử cái này:
{% url 'myview' office=foobar %}
Nó đã làm việc cho tôi. Về cơ bản, nó làm ngược lại liên kết đó và áp dụng các đối số đã cho.