Django:POST表单(我正在使用csrf_protect做错smt)

时间:2013-04-07 13:22:29

标签: django post

我做错了什么?

...
from django.views.decorators.csrf import csrf_protect
from django.template import RequestContext

@csrf_protect
def home(request):
    return render_to_response('home/home.html', {}, RequestContext(request))

def mail(request):
    if request.method == 'POST':
         ...

形式:

<form method="POST" action="sendemail">
    {% csrf_token %}
    <input name="name" type="text" placeholder="Namr">
    <input name="email" type="text" placeholder="mail">
    <input type="submit">
</form>

URL:

 url(r'^sendemail$', 'openshift.views.mail')

谢谢。

1 个答案:

答案 0 :(得分:1)

@csrf_protect装饰器应位于处理表单的视图上,而不是显示表单的视图。

此外,如果您安装了CSRF中间件,则所有POST视图都会自动受到保护。

请参阅文档:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/