即使使用{%CSRF_token%},Django CSRF验证也失败

2024-04-26 19:06:39 发布

您现在位置:Python中文网/ 问答频道 /正文

向下面的Django视图发布请求会导致(403)CSRF验证失败。我已经确认隐藏的csrf令牌在页面源代码中呈现。我也可以在其他视图中无错误地发出POST请求。我不确定如何进一步调试。在

视图.py:

def email(request):
    if request.method == 'POST':
        email = request.POST['email']
        fd = open('emaildb.csv','a')
        fd.write(email+',somefile\n')
        fd.close()
        return render(request, 'receipts/email.html', {'text':'Thanks, we''ll get back to you soon.'})
    else:
        return render(request, 'receipts/email.html',)

电子邮件.html:

^{pr2}$

Tags: django视图return源代码emailrequesthtml错误
1条回答
网友
1楼 · 发布于 2024-04-26 19:06:39

就像你不能调用的方法

<form action="email" method="post" enctype="text/plain">
    {% csrf_token %}
    E-mail:<br>
    <input type="text" name="email">
    <input type="submit" value="Send">
</form>

在你的网址.py你必须写信

^{pr2}$

然后用这样的形式调用这个方法

<form action="{% url 'your_folder_name_where_located_your_urls.py:email'%}" method="post" enctype="text/plain">
    {% csrf_token %}
    E-mail:<br>
    <input type="text" name="email">
    <input type="submit" value="Send">
</form>

相关问题 更多 >