GET 请求 django 方式
GET request the django way
我正在玩 Django,有以下问题。
我在某个模板中有一个搜索表单:
<form role="search" method="get" action="{% url 'polls:search' %}">
....
<\form>
例如,形成以下请求:
http://127.0.0.1:8000/search/?text=dog&year=2017
view.py 文件中的相应函数可以很好地处理此请求。
在其他模板中的某个时候,我需要制作一个 link 导致
http://127.0.0.1:8000/search/?text=&year=2017
我执行以下操作:
<a href="{% url 'polls:search' %}?text=&year=2017">
它看起来有点丑,而且可能不正确。
还有别的办法吗?
比如是否可以用Django方式形成get请求:
http://127.0.0.1:8000/search/dog/2017
所以在另一个模板中,可以写
<a href="{% url 'polls:search' %} text='' year=2017">
从语义上讲,搜索词应该是获取参数。您可以编写一个简单的模板标签,它接受关键字参数并使用 QueryDict
来处理正确的 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
它将能够正确处理尴尬的数据,例如:
...{% querystring text='foo bar' %}
# ...text=foo+bar
我正在玩 Django,有以下问题。
我在某个模板中有一个搜索表单:
<form role="search" method="get" action="{% url 'polls:search' %}">
....
<\form>
例如,形成以下请求:
http://127.0.0.1:8000/search/?text=dog&year=2017
view.py 文件中的相应函数可以很好地处理此请求。
在其他模板中的某个时候,我需要制作一个 link 导致
http://127.0.0.1:8000/search/?text=&year=2017
我执行以下操作:
<a href="{% url 'polls:search' %}?text=&year=2017">
它看起来有点丑,而且可能不正确。 还有别的办法吗?
比如是否可以用Django方式形成get请求:
http://127.0.0.1:8000/search/dog/2017
所以在另一个模板中,可以写
<a href="{% url 'polls:search' %} text='' year=2017">
从语义上讲,搜索词应该是获取参数。您可以编写一个简单的模板标签,它接受关键字参数并使用 QueryDict
来处理正确的 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
它将能够正确处理尴尬的数据,例如:
...{% querystring text='foo bar' %}
# ...text=foo+bar