Django中电子邮件验证的实现

10

我创建了一个 Django 应用,并在应用中创建了一个注册页面(简单的 HTML 表单),其中包含在注册时使用的电子邮件字段。现在我想在用户注册时实现电子邮件验证,例如向用户发送一封电子邮件(发送到注册表格中提供的电子邮件地址)。通过谷歌搜索,我发现有一个 Django 方法 'send_email' 可以用于此操作。但作为 Django 新手,我无法理解如何进行更改和创建所需的函数。是否有人可以帮助我完成这个操作或指出一些教程可以帮助我?或者除了 Django 的 'send_email' 方法之外,还有其他方法可以实现这个功能。感激不尽。

以下是我的代码。

VIEWS.PY

def registrationForm(request):
    if request.method == "POST":  
        firstName = request.POST.get("firstName")
        lastName = request.POST.get("lastName")
        email = request.POST.get("email")
        password = request.POST.get("password")
        sex = request.POST.get("sex")
        birthday = request.POST.get("birthday")
        print request.POST.get("sex")
        UniversityDetails(firstName=firstName,lastName=lastName,email=email,password=password,sex=sex,birthday=birthday).save()
        return render_to_response('registrationForm.html')
    return render_to_response("registrationForm.html")

def login(request):
    if request.POST:            
        email=request.POST.get("username")
        password = request.POST.get("password")
        print email
        print password
        user = UniversityDetails.objects.filter(email=email,password=password)
        print user
        if(not user):
            return render_to_response("registrationForm.html",{'invalid': True })
        else:
            return render_to_response("login.html")
    return render_to_response("registrationForm.html")

注册表单页面.html

<html>
<head>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

  <script>
  $(document).ready(function() {
    $("#datepicker").datepicker();
  });
  </script>
</head>

<title>
Login/Registration Page
</title>

    <script type="text/javascript">

   //Created / Generates the captcha function    
    function DrawCaptcha()
    {
        var a = Math.ceil(Math.random() * 10)+ '';
        var b = Math.ceil(Math.random() * 10)+ '';       
        var c = Math.ceil(Math.random() * 10)+ '';  
        var d = Math.ceil(Math.random() * 10)+ '';  
        var e = Math.ceil(Math.random() * 10)+ '';  
        var f = Math.ceil(Math.random() * 10)+ '';  
        var g = Math.ceil(Math.random() * 10)+ '';  
        var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' '+ f + ' ' + g;
        document.getElementById("txtCaptcha").value = code
    }

    // Validate the Entered input aganist the generated security code function   
    function ValidCaptcha(){
        var str1 = removeSpaces(document.getElementById('txtCaptcha').value);
        var str2 = removeSpaces(document.getElementById('txtInput').value);
        if (str1 == str2) return true;        
        return false;

    }

    // Remove the spaces from the entered and generated code
    function removeSpaces(string)
    {
        return string.split(' ').join('');
    }

    </script>
<body onload="DrawCaptcha();">

<div align="center">
<form name="userInputForm" method="POST" id="myFormid" action="http://10.1.0.90:8080/login/">
<div style="float:left;width:100%;">
  <p style="float:left;margin-right:10px;width:auto;"><label style="float:left;">Email id</label><br/> <input type="text" name="username" size="25" /></p>
  <p style="float:left;margin-right:10px;width:auto;"><label style="float:left;">Password</label><br/><input type="password" name="password" size="25" />

{% if invalid %}
    Mismatch in your email/password. 
{% endif %}

</p>

 </div> 
    <p style="clear:both;float:left;"><input type="submit" value="Log in" /></p> 
</div>
</form><
<script type="text/javascript">
function userCheck(){
    /*document.getElementById('myFormid').action = "http://10.1.0.90:8080/login/";
    if ((document.userInputForm.username.value.length==0)) */
}
</script>
<form name ="myform"  method="POST" id='FormID'>
<table>
<tr>
<td>First name</td>
<td>
<input type="text" name="firstName" value=""  maxlength="100" />
<b id="firstNameID" style="font-family:Times New Roman;color:#B4045F;font-size:14px;">
</td>
</tr>

<tr>
<td>Last name</td>
<td>
<input type="text" name="lastName" value="" maxlength="100" />
</td>
</tr>

<tr>
<td>E-mail</td>
<td>
<input type="text" name="email" value="" maxlength="100" />
</td>
</tr>
<tr>
<td>Password</td>
<td>
<input type="password" name="password" value="" maxlength="100"  />
<b id="passwordID" style="font-family:Times New Roman;color:#B4045F;font-size:14px;">
</td>
</tr>
<tr>
<td>Gender:</td>
<td>
<input type="radio" name="sex" value="male" /> Male
<input type="radio" name="sex" value="female" /> Female
</td>
</tr>
<tr>
<td>Birthday</td>
<td>
<input type="text" name="birthday" id='datepicker' value="" maxlength="100" />
</td>
</tr>
</tr>
</table>
<table>
<tr>
    <td>

    </td>
</tr>
<tr>
    <td>
        <input type="text" id="txtCaptcha" 
            style="background-image:url(1.jpg); text-align:center; border:none;
            font-weight:bold; font-family:Modern" />
        <input type="button" id="btnrefresh" value="Refresh" onclick="DrawCaptcha();" />
    </td>
</tr>
<tr>
    <td>
        <input type="text" id="txtInput"/>    
    </td>

<td> <br> <br>
<input type="button" value="Sign Up" onClick="isEmpty();"/>
</td>
</tr>
</table>
<script type="text/javascript">
function isEmpty(){
    if  ((document.myform.firstName.value.length==0)) 
        {
        document.getElementById('firstNameID').innerHTML = 'Please fill this field';
        return true;
        }
    else if ((document.myform.password.value.length==0)) 
        {
        document.getElementById('passwordID').innerHTML = 'Please fill this field';
        return true;
        }
    else if (! ValidCaptcha())
        {
            alert("Captcha entered wrong");
        }

    else 
        { 
        document.getElementById('FormID').action = "http://10.1.0.90:8080/registrationForm/";
        document.getElementById('FormID').submit();
        return false; 
        }
}
</script>
</body>


</html>

1
rv_k,请重新考虑你的回答,因为django-registration已不再维护,会给很多人带来不良推荐。谢谢。 - miguelfg
2个回答

9

请查看可插拔应用程序django-registration

如果您想自己编写代码,也可以使用该代码作为参考。

回复评论:

django-registration非常适合您。它不带有HTML模板,您只需稍微调整表单即可。 它有非常好的文档

django-registration是否带有我可以立即使用的示例模板? 不,由于以下两个原因:

1. Providing default templates with an application is generally
   hard to impossible, because different sites can have such
   wildly different design and template structure. Any attempt to
   provide templates which would work with all the possibilities
   would probably end up working with none of them.

2. A number of things in django-registration depend on the
   specific :ref:`registration backend <backend-api>` you use,
   including the variables which end up in template
   contexts. Since django-registration has no way of knowing in
   advance what backend you're going to be using, it also has no
   way of knowing what your templates will need to look like.

Fortunately, however, django-registration has good documentation
which explains what context variables will be available to
templates, and so it should be easy for anyone who knows Django's
template system to create templates which integrate with their own
site.

我已经检查过了,但我已经用HTML表单创建了我的注册表格。是否仍然可以在我的应用程序中仅使用Django Registration进行电子邮件验证? - rv_k
1
请查看这个SO问题:https://dev59.com/anM_5IYBdhLWcg3wjj-r - dting

4

这个回答在理论上可能会解决问题,但最好在此处包含答案的基本部分以供未来用户参考,并提供链接作为参考。链接为主导的答案可能会因为链接腐烂而失效。 - Mogsdad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接