django实现登录注册

7 篇文章 0 订阅

1:开发目的:

       用django实现简单的登陆注册。

2详细代码:

  models.py

  

'''
注册
'''
class Register(models.Model):
    email=models.EmailField(verbose_name="电子邮箱")
    password=models.CharField(max_length=50,verbose_name="密码") 
    phone= models.CharField(max_length=50, verbose_name="联系电话") 
    class Meta:
        verbose_name_plural="用户管理"
    def __unicode__(self):
        return self.email
forms.py

class userForm(forms.Form):
    email=forms.EmailField()
    password=forms.CharField()
    newpassword=forms.CharField()
    phone=forms.CharField()
    
    def clean(self):

        cleaned_data = super(userForm, self).clean()

        password= cleaned_data.get("password")

        newpassword= cleaned_data.get("newpassword")

        if password and newpassword:

            if password!=newpassword:

                msg = u"两个密码字段不一致。"

                self._errors["newpassword"] = self.error_class([msg])

        return cleaned_data
    def clean_email(self):   
        '''''验证重复email'''  
        emails = Register.objects.filter(email__iexact=self.cleaned_data["email"])   
        if not emails:   
            return self.cleaned_data["email"]   
        raise forms.ValidationError(u"该邮箱已经被使用请使用其他的")
    
class loginForm(forms.Form):
    email=forms.EmailField()
    password=forms.CharField()
    captcha=CaptchaField()
    def clean_email(self):   
        '''''验证重复email'''  
        emails = Register.objects.filter(email__iexact=self.cleaned_data["email"])   
        if emails:  
            return self.cleaned_data["email"]   
        raise forms.ValidationError(u"该邮箱没有注册,请注册!")   
    def clean_password(self):   
        '''''验证密码是否正确'''  
        password = Register.objects.filter(password__iexact=self.cleaned_data["password"])   
        if password:   
            return self.cleaned_data["password"]  
        raise forms.ValidationError(u"密码错误!") 
    
 
views.py

用户注册
def regist(request):
    form=userForm()
    if request.method=="POST":         
        form=userForm(request.POST.copy())         
        if form.is_valid():             
            email = form.cleaned_data["email"]            
            password = form.cleaned_data["password"]  
            newpassword = form.cleaned_data["newpassword"]  
            phone = form.cleaned_data["phone"]             
            if password != newpassword:                 
                return HttpResponse('重复登录密码与登录密码不一致');             
            reg = Register.objects.create(email=email, password=password,phone=phone)             
            reg.save() 
            return render_to_response('login1/registe_ok.html',{'form':form},context_instance=RequestContext(request));    
    return render_to_response('login1/register.html',{'form':form},context_instance=RequestContext(request)); 



#用户登录
def login(request):
    if request.method == 'POST':
        form = loginForm(request.POST.copy())
        if form.is_valid():
            human = True
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            user =Register.objects.filter(email__exact = email, password__exact = password)
            if user:
                request.session['email'] = email
                return HttpResponseRedirect('/')
            else:
                return HttpResponseRedirect('/login/')
            
    else:
        form=loginForm()
        if request.GET.get('newsn')=='1':
                csn=CaptchaStore.generate_key()
                cimageurl= captcha_image_url(csn)
                return HttpResponse(cimageurl)
    return render_to_response('login1/login.html',{'form':form},context_instance=RequestContext(request));
    
html模板:

1>注册页面:

<form class="form-horizontal" action="/regist/" method="post"> 
   {% csrf_token %}
		                            <div class="control-group">   
		                       <label class="control-label" for="inputEmail">邮箱</label>   
		                         <div class="controls">  
		                          <input type="text" value="{{ form.email.value|default:'' }}" name="email" placeholder="输入常用邮箱">  
		                         <span style="color:red;"> {{form.email.errors}}</span>
		                         </div>  </div>  
		                         <div class="control-group">  
		                         <label class="control-label" for="inputPassword">密码</label>   
		                         <div class="controls">    
		                           <input type="password"  value="{{ form.password.value|default:'' }}" name="password" placeholder="登录密码">    
		                            <span style="color:red;"> {{form.password.errors}}</span>
		                            </div> </div> 
		                            <div class="control-group">  
		                         <label class="control-label" for="inputPassword">确认密码</label>   
		                         <div class="controls">    
		                           <input type="password"  name="newpassword"placeholder="确认登录密码">     
		                           <span style="color:red;"> {{form.newpassword.errors}}</span>
		                            </div></div> 
		                          <div class="control-group">   
		                       <label class="control-label" for="inputphone">联系电话</label>   
		                         <div class="controls">     
		                          <input type="text"  value="{{ form.phone.value|default:'' }}" name="phone" placeholder="联系电话">  
		                         <span style="color:red;"> {{form.phone.errors}}</span>
		                         </div>  </div> 
		            <div class="control-group">  
		              <div class="controls">     
		               <label class="checkbox">     
		                  <input type="checkbox">  <a data-toggle="modal" href="#myModal" >已同意注册协议</a>  </label>      
		                  <button type="submit" class="btn btn-primary ">注册</button> 
		                     </div> 
		                      </div>
                      </form> 
         </div> 
     <div class="span6" >
  
         	 
         	<a href="/login/" class="btn btn-primary">已有账户。直接登录!</a>
      </div>
  

用户登录:

<form class="form-horizontal" action="/login/" method="post"> 
   {% csrf_token %}
                           <div class="control-group">   
                      <label class="control-label" for="inputEmail">邮箱</label>   
                        <div class="controls">  
                         <input type="text" value="{{ form.email.value|default:'' }}" name="email" placeholder="输入常用邮箱">  
                        <span style="color:red;"> {{form.email.errors}}</span>
                        </div>  </div>  
                        <div class="control-group">  
                        <label class="control-label" for="inputPassword">密码</label>   
                        <div class="controls">    
                          <input type="password"  value="{{ form.password.value|default:'' }}" name="password" placeholder="登录密码">    
                           <span style="color:red;"> {{form.password.errors}}</span>
                           </div> </div> 
                           
                         <div class="control-group">   
                      <label class="control-label" for="inputphone">验证码:</label>   
                        <div class="controls">     
                         {{form.captcha}}
                         <br>
                    <button id='js-captcha-refresh' type="button">刷新验证码</button>
                   <script>
   $('#js-captcha-refresh').click(function(){
        $.get("?newsn=1", function(result){
            $('.captcha').attr("src",result);
            $('#id_captcha_0').attr("value",result.split('/')[3]);
         });
   return false;
                   });
                  </script>
                     <span style="color:red;"> {{form.captcha.errors}}</span>
                        </div>  </div> 
           <div class="control-group">  
             <div class="controls">     
                 <button type="submit" class="btn  btn-primary">登录</button> 
                    <a href="/regist/" class="btn btn-primary ">立即注册</a>
                   <a href="/changepwd/" >忘记密码?</a>
                    </div> 
                     </div>
                      </form> 





  

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值