Django中的电子邮件确认实现

Posted

技术标签:

【中文标题】Django中的电子邮件确认实现【英文标题】:E-mail confirmation implementation in Django 【发布时间】:2011-07-26 14:11:55 【问题描述】:

我创建了一个 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")

registrationform.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>

【问题讨论】:

查看 Django 文档:docs.djangoproject.com/en/dev/topics/email">发送电子邮件. 【参考方案1】:

我会使用django-registration 应用程序。您可以通过 Google 找到更多文档和教程。

【讨论】:

感谢菲利普的回复。我已经在html中实现了注册页面。我需要发送一封确认用户注册的电子邮件。是否可以使用我创建的简单注册表单单独执行电子邮件验证功能。【参考方案2】:

我认为你应该使用Signals

点赞django-registration

【讨论】:

以上是关于Django中的电子邮件确认实现的主要内容,如果未能解决你的问题,请参考以下文章

Django - 身份验证,使用电子邮件确认注册

尝试使用 Django 电子邮件确认来验证用户,但是一些用户在尝试确认他们的电子邮件时收到此错误

django-allauth:如何修改电子邮件确认 url?

如何使用 allauth 和 rest-auth 从 React 前端在 Django 中重新发送确认电子邮件

Django + Graphene,注册用户后,开发者控制台已经到了一封确认信。我怎样才能控制这封电子邮件?

如何使某个模板仅对 Django 中已确认的用户可见?