2013-02-24 95 views
3

搜索结果网址中包含csrf。不知道为什么会有,以及如何删除它。搜索很好。下面是URL搜索结果中的django csrf_token网址

/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)) 

感谢

+0

@Aidan阿雯答案是第一个正确 – catherine 2013-02-24 10:19:47

回答

9

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

+0

谢谢,不知道CSRF不需要用GET请求 – Goran 2013-02-24 10:29:09

1

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

检查搜索表单模板。

1

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

看看这个样本的Django的:

from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def my_view(request): 
    return HttpResponse('Hello world')