Python 以django方式获取请求

Python 以django方式获取请求,python,django,get,search-form,Python,Django,Get,Search Form,我和Django一起玩,我有以下问题 我在一些模板中有一个搜索表单: <form role="search" method="get" action="{% url 'polls:search' %}"> .... <\form> view.py文件中的相应函数可以很好地处理此请求 在其他模板中的某个点上,我需要创建一个链接,该链接将导致 http://127.0.0.1:8000/search/?text=&year=2017 我做了以下工作: <a

我和Django一起玩,我有以下问题

我在一些模板中有一个搜索表单:

<form role="search" method="get" action="{% url 'polls:search' %}">
....
<\form>
view.py文件中的相应函数可以很好地处理此请求

在其他模板中的某个点上,我需要创建一个链接,该链接将导致

http://127.0.0.1:8000/search/?text=&year=2017
我做了以下工作:

 <a href="{% url 'polls:search' %}?text=&year=2017">
因此,在另一个模板中,可以编写

 <a href="{% url 'polls:search' %} text='' year=2017">

从语义上讲,搜索词应该是get参数。您可以编写一个简单的模板标记,该标记采用关键字参数,并使用a来处理正确的url编码:

# some_installed_app/templatetags/my_tags.py
from django.http import QueryDict
from django import template

register = template.Library()

@register.simple_tag
def querystring(**kwargs):
    d = QueryDict(mutable=True)
    d.update(kwargs)
    return d.urlencode()
在模板中,您可以执行以下操作:

# template.html
{% load my_tags %}
<a href="{% url 'polls:search' %}?{% querystring text='' year=2017 %}">
# http://127.0.0.1:8000/search/?text=&year=2017
# some_installed_app/templatetags/my_tags.py
from django.http import QueryDict
from django import template

register = template.Library()

@register.simple_tag
def querystring(**kwargs):
    d = QueryDict(mutable=True)
    d.update(kwargs)
    return d.urlencode()
# template.html
{% load my_tags %}
<a href="{% url 'polls:search' %}?{% querystring text='' year=2017 %}">
# http://127.0.0.1:8000/search/?text=&year=2017
...{% querystring text='foo bar' %}
# ...text=foo+bar