2014-01-16 25 views
0

我試圖在Django中創建一個簡單的聯繫表單,但我被困在403 Forbidden錯誤。我怎樣才能確定Django的403錯誤?我重定向到該網頁似乎並沒有解釋什麼: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', '[email protected]'), 
       ['[email protected]'], 
      ) 
      return HttpResponseRedirect('/contact/thanks/') 
    return render(request, 'contact_form.html', 
     {'errors': errors}) 

某人怎麼能指出這個問題,並給出一點解釋來解決它?

回答

0

大多數情況下,您可能會錯過表單標記之間的html模板中的{% csrf_token %}

0

原來的書幾乎沒有提到,你需要SMTP信息添加到您的settings.py文件

舉個例子,如果你使用Gmail:

EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'password123' 
DEFAULT_FROM_EMAIL = '[email protected]' 
DEFAULT_TO_EMAIL = '[email protected]'