+ -
当前位置:首页 → 问答吧 → django book 例题 Forbidden (403) 错误

django book 例题 Forbidden (403) 错误

时间:2010-11-19

来源:互联网

跟着 http://djangobook.py3k.cn/2.0/chapter07/ 学到了第7章

最后的那个 contact 的例子得到了 Forbidden (403) 错误,Google 了下,根据Google的结果在settings.py中加了

django.middleware.csrf.CsrfResponseMiddleware,

重启服务器,还是出现相同的错误

views.py

Python code

from django.shortcuts import render_to_response
from newtest.contact.forms import ContactForm
from django.http import HttpResponse,HttpResponseRedirect
from django.core.mail import send_mail

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(
                cd['subject'],
                cd['message'],
                cd.get('email','[email protected]'),
                ['[email protected]'],
                )
            return HttpResponseRedirect('/contact/thanks/')
    else:
        form = ContactForm()

    return render_to_response('contact_form.html',{'form':form})



contact_form.html
HTML code

<html>
    <head>
        <title>Contact us</title>
    </head>
    <body>
        <h1>Contact us</h1>
        {% if form.errors %}
            <p style="color:red;">
                Please correct the error{{ form.errors|pluralize }} below.
            </p>
        {% endif %}

        <form action="" method="post">
            <table>
                {{ form.as_table }}
            </table>
            <input type="SUBMIT" value="Submit">
        </form>
    </body>
</html>



请童鞋们帮忙看下是哪里出了问题,刚开始学,问题笨不要笑

作者: zanpen2000   发布时间: 2010-11-19

django.middleware.csrf.CsrfResponseMiddleware, 把这个中间件去掉
或者加上这个中间件也行。但是要在你的模板里面的form后
  <form action="" method="post"> {% csrf_token %}
  <table>
  {{ form.as_table }}
  </table>
  <input type="SUBMIT" value="Submit">
  </form>

作者: CJljfn   发布时间: 2010-11-19

这个是django1.2新增的一个安全机制。
具体的看下文档吧。我也理解的不是很深

作者: CJljfn   发布时间: 2010-11-19