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')
  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/5254232.html
Copyright © 2011-2022 走看看