2017-03-17 25 views
1

私はフラスコでこれを行うが、djangoを学ぶ方法を知っています。私は有効な電子メールが投稿される前に入力されていることを確認しようとしています。 if else文を実行しなければ、フォームは動作しますが、検証はしません。私は以下を持っていますが、唯一の部分はコメント付きではありませんが、view.py全体が含まれています。regex電子メールの確認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

requestform属性を持っていません。あなたは既にif request.method == "POST"を持っているので - あなたが安全に次の操作を行うことができます。

理想的
request.POST['email'] 

変更

request.form['email'] 

を、あなたはdjango forms for handing the validationsを使用しなければならないなどDjangoのフォームは、より良い検証ロジック、正規表現を持っていますバリデーターなど。

+0

フラスコからフラスコに行くとどうなりますか? 2週間でジャンゴ。 –

+0

されている..それを行った:) – karthikr

関連する問題