zoukankan      html  css  js  c++  java
  • 2.4.2、Django处理登录和注销

    在上一节的基础上,我们已经引入了django.contrib.auth应用,我们就可以在view函数中判断用户是否已经登录以及获取用户信息:

    if request.user.is_authenticated():     #判断用户是否已登录 

        user = request.user;            #获取已登录的用户 

    else:    

        user = request.user;            #非登录用户将返回AnonymousUser对象

    Django的User对象提供了一系列的属性和方法,其中password存储的是加密后的密码,is_staff记录用户是否有管理员权限,其他的属性可以参考官方文档。同时django.contrib.auth模块中提供了authenticate()、login()、logout()等函数,分别实现认证、登录、登出等功能。

    Django还为我们提供了内置的处理login、logout的view函数,也可以按需要自己实现view函数。

    下面就开始修改Urls.py,views.py,base.html吧

    Urls.py中的配置:

    from myoss.views import login_view,logout_view 

    urlpatterns = patterns('', 

        ... ... 

        (r'^accounts/login/$', login_view), 

        (r'^accounts/logout/$', logout_view), 

    )

    Views.py中的login_view和logout_view函数定义:

    from django.contrib.auth import authenticate,login,logout 

    def login_view(request):     

        user=authenticate(username=request.POST['username'], password=request.POST['password']) 

        if user is not None: 

            login(request, user)     

            print request.user   

            return list_product(request) 

        else: 

            #验证失败,暂时不做处理 

            return store_view(request) 

    def logout_view(request): 

        logout(request) 

        return store_view(request)

    ü  base.html中实现的简单登录表单

    {% if request.user.is_authenticated %} 

            <div class="pull-right"> 

                <a href=#>欢迎您:{{request.user}}</a>   

                <a class="btn danger small" href="{% url depotapp.views.logout_view %}">注销</a> 

            </div> 

    {% else %} 

              <form action="{% url depotapp.views.login_view %}" method='post' class="pull-right"> 

                {% csrf_token %} 

                <input name='username' class="input-small" type="text" placeholder="用户名"> 

                <input name='password' class="input-small" type="password" placeholder="密码"> 

                <button class="btn" type="submit">登录</button> 

              </form> 

    {% endif %}

    上面的东西简单看看就好,看下django自带模板对变量,逻辑处理的方式就可以了。

  • 相关阅读:
    [转]一键安装藏隐患,phpStudy批量入侵的分析与溯源
    Vue Cli安装以及使用
    全局安装 Vue cli3 和 继续使用 Vue-cli2.x
    [转]局域网共享一键修复 18.5.8 https://zhuanlan.zhihu.com/p/24178142
    DELPHI中千万别直接使用CreateThread ,建议使用BeginThread(在C++中无大问题,可是到了DELPHI中情况就不一样了)
    [转]【Delphi】 Thread.Queue与Synchronize的区别
    如何使用Windows Library文件进行持久化
    chromium中的性能优化工具syzyProf
    [转]室友靠打游戏拿30万offer,秘密竟然是……
    .NET中的三种Timer的区别和用法
  • 原文地址:https://www.cnblogs.com/fremcode/p/3842185.html
Copyright © 2011-2022 走看看