【问题标题】:django csrf_token in search result url搜索结果 url 中的 django csrf_token
【发布时间】:2013-02-09 15:05:20
【问题描述】:

在搜索结果 url 中有 csrf。不知道为什么存在以及如何删除它。搜索效果很好。这是网址

/search/?csrfmiddlewaretoken=675d1340034e094866d15a921407e3fc&q=testing

这里是视图:

def search(request):
    query = request.GET.get('q', '')
    rezult = []
    if query:
    qset1 = (
        Q(title__icontains=query) 
    )
    result = Product.objects.filter(qset1).distinct()
    if result.count() == 1:
        return HttpResponseRedirect(result[0].get_absolute_url())
    return render_to_response('search/search.html',{'query': query, 'result': result, },context_instance=RequestContext(request))

谢谢

【问题讨论】:

  • @Aidan Ewen 答案是第一个正确的

标签: django django-forms django-views


【解决方案1】:

我假设您已在搜索表单的 input 元素之一中添加了 {% csrf_token %}。这将导致令牌与表单一起提交。

检查您的搜索表单模板。

【讨论】:

    【解决方案2】:

    从模板中的表单中删除 {% csrf_token %},您不需要它,因为您正在发出 GET 请求。

    【讨论】:

    • 谢谢,不知道 GET 请求不需要 csrf
    【解决方案3】:

    您在表单中添加了{% csrf_token %}。如果您不需要 csrf,请将其从表单中删除并添加 csrf_exempt。

    看看这个 django 示例:

    from django.views.decorators.csrf import csrf_exempt
    
    @csrf_exempt
    def my_view(request):
         return HttpResponse('Hello world')
    

    【讨论】:

      猜你喜欢
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      相关资源
      最近更新 更多