8

He creado una aplicación Django. Tengo una página de registro (formulario HTML simple) en la aplicación, y tiene un campo de correo electrónico mientras se registra. Ahora quería implementar una verificación de correo electrónico cuando el usuario se registra. Como enviar un correo electrónico al usuario (a un correo electrónico en forma de registro). Al buscar en Google encontré que hay un método de Django 'send_email' que se puede usar para lo anterior. Pero al ser un novato de Django, no pude entender los cambios y las funciones que se crearon para hacerlo. ¿Alguien puede ayudarme a hacer esto o señalar algunos tutoriales que me podrían ayudar? ¿O hay otra forma de implementar esto que no sea el método 'send_email' de Django? Cualquier ayuda sería apreciadaImplementación de la verificación de correo electrónico en Django

Pegaré aquí mis códigos actuales.

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> 
+1

rv_k, reconsidere su respuesta ya que django-registration ya no se mantiene, y dará lugar a que se recomienden a muchas personas. Aclamaciones. – miguelfg

Respuesta

8

Salida django-registration como una aplicación enchufable.

También puede utilizar el código como referencia si desea hacer su propio diseño.

respuesta al comentario:

django-registro sería perfecto para usted. No viene con plantillas html, solo tendrá que ajustar sus formularios ligeramente. Tiene muy buena documentation.

¿El django-registration viene con cualquier plantilla de muestra que pueda usar de inmediato? No, por dos razones:

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. 
+0

lo revisé, pero ya creé mis formularios de registro con formularios html. Todavía es posible usar django-registration para la verificación de correo electrónico solo con mi aplicación. –

+1

echa un vistazo a esta pregunta AS tan bien http://stackoverflow.com/questions/1325983/django-send-email-in-html-with-django-registration – DTing

4

Debe comprobar django-allauth, que hace lo que buscas y mucho más cosas. django-registration solía ser recomendado, pero ya no se mantiene como se dice en it's bitbucket project. (Como se ha respondido here)

+0

Esto teóricamente puede responder a la pregunta, pero sería mejor incluir las partes esenciales de la respuesta aquí para futuros usuarios, y proporcione el enlace de referencia. [Respuestas dominadas por el enlace] (// meta.stackexchange.com/questions/8231) pueden dejar de ser válidas a través de [link rot] (// en.wikipedia.org/wiki/Link_rot). – Mogsdad

Cuestiones relacionadas