2013-02-24 131 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')