django-templates django过滤器 - 是否有可能通过Django的{%url%}模板标签传递查询参数?




django自定义过滤器 django教程2018 (5)

不,因为GET参数不是URL的一部分。

简单地将它们添加到最后:

<a href="{% url myview %}?office=foobar">

对于Django 1.5+

<a href="{% url 'myview' %}?office=foobar">

我想将请求参数添加到{% url %}标记,例如?office=foobar

这可能吗? 我找不到任何东西。


首先,一个愚蠢的答案:

{% url my-view-name %}?office=foobar

一个严肃的问题:不,你不能。 Django的URL解析器仅匹配URL的路径部分,因此{% url %}标记只能反转URL的该部分。


一种混合当前参数和新参数的方法:

{% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }}

修改您的设置以使请求变量:

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)


要为基于类的视图禁用CSRF,以下操作适用于我。
使用django 1.10和python 3.5.2

from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator

@method_decorator(csrf_exempt, name='dispatch')
class TestView(View):
    def post(self, request, *args, **kwargs):
        return HttpResponse('Hello world')






django django-templates