2017-03-17 63 views
1

在學校的項目上工作我知道如何做到這一點在燒瓶,但學習Django。我試圖確保在發佈之前輸入有效的電子郵件。如果我不做if if語句,表單會通過,但不會驗證它。我有以下內容,唯一不工作的部分是帶有註釋的部分,但是我包含了整個views.py,因此您可以看到頂部可能出錯的內容。正則表達式電子郵件驗證django

views.py

from django.shortcuts import render, redirect 
from .models import User 
import re 
EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9.+_-][email protected][a-zA-Z0-9._-]+\.[a-zA-Z]+$') 

# Create your views here. 
def index(request): 

    return render(request, "emailvalidation/index.html") 


def create(request): 
    if request.method == 'POST':         #here down 

     if len(request.form['email']) < 1: 
      add_message("Invalid Email Address!")     #if i take out the if else the form does work 
     elif not EMAIL_REGEX.match(request.form['email']):    #the validation. 
      add_message("Invalid Email Address!") 
     else: 
      User.objects.create(email = request.POST['email'])  #to here 


     context ={ 

      "email": User.objects.all(), 
     } 

    return render(request, 'emailvalidation/success.html' ,context) 




the traceback error 

Environment: 


Request Method: POST 
Request URL: http://localhost:8000/user 

Django Version: 1.10.6 
Python Version: 2.7.10 
Installed Applications: 
['apps.emailvalidation', 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 



Traceback: 

File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\exception.py" in inner 
    42.    response = get_response(request) 

File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\django2\emailval\emailval\apps\emailvalidation\views.py" in create 
    15.  if len(request.form['email']) < 1: 

Exception Type: AttributeError at /user 
Exception Value: 'WSGIRequest' object has no attribute 'form' 
+0

你的url模式是什麼樣的? – Vallentin

+0

而不是創建你自己的模式,你應該看看這個:https://docs.djangoproject.com/en/1.10/ref/validators/#validate-email –

回答

2

request沒有form屬性。既然你已經有了if request.method == "POST" - 你可以放心地執行以下操作:

變化

request.form['email'] 

request.POST['email'] 

理想情況下,你應該使用django forms for handing the validations等Django表單有更好的驗證邏輯,正則表達式驗證器等。

+0

LOL ty多數民衆贊成在從瓶子到Django在兩週內。 –

+0

在那裏..做到了:) – karthikr

相關問題