Implementation of e-mail verification in Django

12,235

Solution 1

Check out django-registration as a pluggable app.

Also you can use the code as a reference if you want to roll your own.

response to comment:

django-registration would be perfect for you. It doesn't come with html templates, you'll just have to adjust your forms slightly. It has very good documentation.

Does django-registration come with any sample templates I can use right away? No, for two reasons:

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.

Solution 2

You should check django-allauth, it does what you look for and plenty of more stuff. django-registration used to be recommended, but it is no longer maintained as it's said in it's bitbucket project. (As it's has been replied here)

Share:
12,235

Related videos on Youtube

rv_k
Author by

rv_k

Software Developer

Updated on June 04, 2022

Comments

  • rv_k
    rv_k almost 2 years

    I have created a Django app. I have a registration page(simple HTML form) in the app,and it has an e-mail field while registering. Now i wanted to implement an email verification when the user registers. Like sending an email to the user (to email given in registration form). By googling i found there is a Django method 'send_email' which can be used for the above. But being a Django newbie, i was not able to understand the changes and functions to be created for doing so. Can somebody help me to do this or point some tutorials which would help me out. Or is there any other way to implement this other than the 'send_email' method of Django. Any help would be appreciated

    I will paste my present codes here.

    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>
    
    • miguelfg
      miguelfg over 9 years
      rv_k please, reconsider your answer since django-registration is no longer maintained, and will lead to many people bad recommended. Cheers.
  • rv_k
    rv_k about 13 years
    i checked it,but i already created my registration forms with html forms. Is it stil able to use django-registration for email verfication alone with my app .
  • dting
    dting about 13 years
    check out this SO question as well stackoverflow.com/questions/1325983/…
  • Mogsdad
    Mogsdad about 8 years
    This may theoretically answer the question, but it would be best to include the essential parts of the answer here for future users, and provide the link for reference. Link-dominated answers can become invalid through link rot.