繁体   English   中英

正则表达式电子邮件验证Django

[英]regex email validation django

在一个学校的项目上工作,我知道如何在烧瓶中做到这一点,但要学习Django。 我试图确保在发布之前输入了有效的电子邮件。 如果我不执行if else语句,则表单会通过,但不会对其进行验证。 我有以下内容,唯一不起作用的部分是带有注释的部分,但是我将整个views.py包括在内,以防万一您在顶部看到可能有误的内容。

views.py

from django.shortcuts import render, redirect
from .models import User
import re
EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9.+_-]+@[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'

request没有form属性。 由于您已经拥有if request.method == "POST" -您可以安全地执行以下操作:

更改

request.form['email']

request.POST['email']

理想情况下,您应该使用Django表单进行验证等。Django表单具有更好的验证逻辑,正则表达式验证器等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM