概述
所有批准的答案建议至少3件事情:
>使用RequestContext作为render_to_response_call的第三个参数
>使用POST方法在每个窗体中添加{%csrf_token%}
>检查settings.py中的MIDDLEWARE_CLASSES
我完全按照建议,但错误仍然出现.我使用django 1.3.1(从ubuntu 12.04仓库)和python 2.7(默认从ubuntu)
这是我的观点:
# Create your views here. from django.template import RequestContext from django.http import HttpResponse from django.shortcuts import render_to_response from models import BookModel def index(request): return HttpResponse('Welcome to the library') def search_form(request): return render_to_response('library/search_form.html') def search(request): if request.method=='POST': if 'q' in request.POST: q=request.POST['q'] bookModel = BookModel.objects.filter(title__icontains=q) result = {'books' : bookModel,} return render_to_response('library/search.html',result,context_instance=RequestContext(request)) else: return search_form(request) else: return search_form(request)
这是我的模板(search_form.html):
{% extends "base.html" %} {% block content %} <form action="/library/search/" method="post"> {% csrf_token %} <input type="text" name="q"> <input type="submit" value="Search"> </form> {% endblock %}
我重新启动了服务器,但403的禁止错误仍然存??在,告诉CSRF验证失败.
我有2个问题:
>如何解决这个错误?
>为什么在django中做一个“POST”很难,我的意思是有什么具体的原因让它如此冗长(我来自PHP,从来没有发现过这样的问题)?
context_instance=RequestContext(request)
总结
以上是编程之家为你收集整理的django – POST方法总是返回403禁止全部内容,希望文章能够帮你解决django – POST方法总是返回403禁止所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧