我正在尝试在Django中创建一个简单的联系表单,但我遇到了403 Forbidden错误。如何使用Django查明403错误?我重定向到的页面似乎没有解释任何内容:
失败原因:
CSRF token missing or incorrect.
我正在关注djangobook.com的指南第7章:表格和我在制作联系表格
这与我的联系人视图完全相同:
def contact(request):
errors = []
if request.method == 'POST':
if not request.POST.get('subject', ''):
errors.append('Enter a subject.')
if not request.POST.get('message', ''):
errors.append('Enter a message.')
if request.POST.get('email') and '@' not in request.POST['email']:
errors.append('Enter a valid e-mail address.')
if not errors:
send_mail(
request.POST['subject'],
request.POST['message'],
request.POST.get('email', 'cinicraftmatt@gmail.com'),
['cinicraftmatt@gmail.com'],
)
return HttpResponseRedirect('/contact/thanks/')
return render(request, 'contact_form.html',
{'errors': errors})
如果有人能够找到解决这个问题的解决方案并且解释得很少?
答案 0 :(得分:0)
您可能会错过表单标记之间的html模板中的{% csrf_token %}
。
答案 1 :(得分:0)
原来这本书几乎没有提到你需要在你的settings.py文件中添加smtp信息
以下是使用gmail的示例:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'YourGmail@gmail.com'
EMAIL_HOST_PASSWORD = 'password123'
DEFAULT_FROM_EMAIL = 'replyService@gmail.com'
DEFAULT_TO_EMAIL = 'Optional@gmail.com'