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-allauth:如何修改电子邮件确认 url?
如何使用 allauth 和 rest-auth 从 React 前端在 Django 中重新发送确认电子邮件