zoukankan      html  css  js  c++  java
  • 【转载】Django自带的注册登陆功能

     

    1.登陆

    知识点:
    a.auth.authenticate(username=name值, password=password值)

    验证用户名和密码

    b.auth.login(request, user)

    登陆操作

    from django.contrib import auth
    
    
    def djlogin(request):
    
        if request.method == 'GET':
            return render(request, 'day6_login.html')
    
        if request.method == 'POST':
    
            name = request.POST.get('name')
            password = request.POST.get('password')
            # 验证用户名和密码,验证通过的话,返回user对象
            user = auth.authenticate(username=name, password=password)
            if user:
                # 验证成功 登陆
                auth.login(request, user)
                return HttpResponseRedirect('/stuapp/index/')
            else:
                return render(request, 'day6_regist.html')
    

    当用户登陆成功时,会生成一个sessionid保存在cookies中,可以在数据库django_session中查看,当用户访问其他页面时,可以通过sessionid判断用户是否已经登陆。


    2.注册

    知识点:
    a.User模型

    django自带User模型,导入方法:from django.contrib.auth.models import User

    b.create_user创建用户

    create_user是django封装好的用于创建用户的方法,创建方法:User.objects.create_user(username=name, password=password)
    ,此处的User是django中自带的User模型

    from django.contrib.auth.models import User
    def djregist(request):
    if request.method == 'GET':
            return render(request, 'day6_regist.html')
        if request.method == 'POST':
            name = request.POST.get('name')
            password = request.POST.get('password')
            # 此处的User 是 django 自带的model
            User.objects.create_user(username=name, password=password)
            return HttpResponseRedirect('/uauth/dj_login/')
    

    数据库中用于存储用户信息的表 auth_user

    3.退出登陆

    知识点:
    a.auth.logout(request)

    退出登陆的操作

    def djlogout(request):
        if request.method == 'GET':
            auth.logout(request)
            return HttpResponseRedirect('/uauth/dj_login/')
    

    4.登陆验证

    知识点:
    a.login_required()

    若在访问某页面时,需要确认用户登陆成功才能访问,可以在url中用login_required方法进行验证,如果登陆成功就执行,如果用户未登陆,自动跳转登陆页面。

    b.LOGIN_URL

    配置跳转路径,,当用户未登陆访问其他页面时,自动跳转到指定的url

        url(r'^index/', login_required(views.index)),
        url(r'^addstu/', login_required(views.addStu), name='astu'),
        url(r'^stupage/', login_required(views.stuPage)),
    

    值得注意的是,一旦加上login_required方法,在用户未登陆时访问页面会出现如下的404错误,所需还需要在setting.py进行配置LOGIN_URL。


    配置跳转路径,当用户未登陆访问其他页面时,自动跳转到登陆页面

    LOGIN_URL = '/uauth/dj_login/'
    
  • 相关阅读:
    关于一位程序员入门的面试经验
    Outpro的博客测试
    优先队列
    linux (centos 6.2)在输入查询或者操作命令时提示-bash: fork: cannot allocate memory
    win10下JDK环境变量
    Mac OS如何安装IDEA
    解决下载github代码慢的问题
    vue 模板语法之指令
    vue的基本介绍以及第一个程序
    消息中间的几大应用场景
  • 原文地址:https://www.cnblogs.com/changqing8023/p/11189944.html
Copyright © 2011-2022 走看看