zoukankan      html  css  js  c++  java
  • django用户认证

    用户登录:

    def logon(request):
        errors_list = []
        if request.method == 'POST':
            u = request.POST['uname']
            p = request.POST['upass']
            #验证用户
            user = authenticate(username=u, password=p)
            if user is not None:
                auth_login(request, user)
                #登录成功后重定向到主页
                return HttpResponseRedirect("/sinfors/")
            else:
                try:
                    #检查用户密码是否正确
                    if not auth_User.objects.get(username = u).check_password(p):
                        errors_list.append(u + ' password is not correct') 
                #检查用户是否存在(auth_User.objects.get(username = u))
                except auth_User.DoesNotExist:
                    errors_list.append(u + ' does not exist') 
    
        return render(request, 'sinfors/login.html', {'errors_list':errors_list})

    页面添加认证:

    #对页面增加验证
    @login_required(login_url="/sinfors/logon/") 
    def index(request):
        servers = infor.objects.all()
        #验证如果用户登录成功,则取相应的用户名显示在主页
        if not request.user.is_anonymous():
            user_loggedin = request.user
        else:
            user_loggedin = 'Guest'
        context = {'servers':servers,'user_loggedin':user_loggedin}
        return render(request,'sinfors/index.html',context)

    新增用户,修改/验证密码:

    #新建用户
    user = User.objects.create_userusername='',password='',email='')
    user.save #不使用user.save()
    
    #重置密码
    user.set_password(passeord='')
    user.save 
    
    #检查用户输入的密码是否正确
    user.check_password('password')

    扩展用户字段:

    model:

    class UserProfile(models.Model):  
        user=models.OneToOneField(User,unique=True)
        phone=models.CharField(max_length=20)
        addr=models.CharField(max_length=500)
    
        def ztest(self):
            if len(self.phone) < 8:
                return 'The phone num is not correct'
            else:
                return 'The phone num is  correct'
    
        def phone_len(self):
            return len(self.phone)
        p_len = property(phone_len)  #custom a property
    print request.user.userprofile.phone
              print request.user.userprofile.user
              print request.user.UserProfile
              print dir(UserProfile)
              UserProfile.C_userp('test01','03129999999','HB'):
                
              u = auth_User.objects.get(username='test')
              a=UserProfile.objects.get(user=u)
              print a.ztest()
              print a.p_len
                
    
              uu=request.user
              u = auth_User.objects.get(username=uu)
              a=UserProfile.objects.get(user=u)
              print dir(UserProfile.objects)
              print a
              UserProfile.C_userp(uu,'12345','AH')
  • 相关阅读:
    SQL_server2000以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
    从SQL Server中导入/导出 Excel 的基本方法
    开启了telnet服务
    Redis之在Linux上安装和简单的使用
    详解Hibernate中的二级缓存
    Reader entry: ���� 乱码
    内部类
    Orical
    el表达式原样输出问题
    intellij idea 修改背景保护色&&修改字体&&快捷键大全
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/5254232.html
Copyright © 2011-2022 走看看