11

在搜索结果 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))

谢谢

4

3 回答 3

22

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

于 2013-02-24T10:09:47.893 回答
4

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

看看这个 Django 示例:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
     return HttpResponse('Hello world')
于 2013-02-24T10:17:47.510 回答
1

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

检查您的搜索表单模板。

于 2013-02-24T10:07:40.087 回答