[Django]登陆界面以及用户登入登出权限

前言:简单的登陆界面展现,以及用户登陆登出,最后用户权限的问题

正文:

首先需要在settings.py设置ROOT_URLCONF,默认值为:

ROOT_URLCONF  = ‘www.urls‘#用户请求django站点页面首先检查这个模块

这里的www.urls是我的工程www下urls.py文件

urls.py文件主要设置urlpatterns参数,设置如下:

urlpatterns= [
    url(r‘^$‘, ‘login.views.login_view‘, name=‘login_view‘),#用户登陆界面

url(r‘^admin/‘, include(admin.site.urls)),#后台登陆
]

这里清理以下思路,当我们访问网页时首先检查ROOT_URLCONF模块,通过观察urls.py文件中的urlpatterns参数设置,网页首先运行login这个APP中的views.py中的login_view函数,当用户输入账户和密码并点击登陆按钮后,判断账户和密码是否正确,若错误,返回首页,正确进入首页.

views.py文件如下:

#coding:utf-8
from django.shortcuts import render,HttpResponse
from django.contrib.auth import authenticate ,logout ,login

from .forms import LoginForm

def login_view(request):
    logout(request)
    if request.method == ‘POST‘:#判断是否为一个POST请求
        form = LoginForm(request.POST)#绑定数据至表单
        if form.is_valid():#判断表单数据是否合法
            uname = form.cleaned_data[‘username‘]#获取表单中用户名称
            pword = form.cleaned_data[‘password‘]#获取表单中用户密码
            user = authenticate(username=uname, password=pword)#调用authenticate认证用户
            if user is not None:
                if user.is_active:
                    login(request, user)
                    return render(request, ‘home/index.html‘)
                    # Redirect to a success page.
            else:
                response = HttpResponse()
                response.write(‘<html><script type="text/javascript">alert("密码错误"); window.location=""</script></html>‘)
                return response
                # Return an ‘invalid login‘ error message.
    else:
        form = LoginForm()
    return render(request, ‘login/index.html‘, {‘form‘: form})

上面view文件中显示用户登陆的过程大致分为:认证用户--登入用户--登出用户三步这主要的三步 ,认证用户使用函数authenticate,登陆用户使用login,登出用户使用logout

模板格式如下:

<div class="login">
            <div id="main">
                   <form method="post">
                  {% csrf_token %}
                  {{ form.as_p }}
                  <input type="submit" value="提交" />
                  </form>
            </div>
       </div>

最后记住必须在登陆用户后才能使用用户权限,模板中使用权限的方法(摘自官方):

模板中的认证数据

当你使用RequestContext时,当前登入的用户和它们的权限在模板上下文中可以访问。

技术细节

技术上讲,这些变量只有在你使用RequestContext并启用了‘django.contrib.auth.context_processors.auth‘

上下文处理器时才可以在模板上下文中访问到。它是默认产生的配置文件。更多信息,参见RequestContext 文档

用户

当渲染RequestContext模板时,当前登录的用户,可能是User

实例或者AnonymousUser实例,会存储在模板变量{{ user }}中:

{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}

如果使用的不是RequestContext,则不可以访问该模板变量:

权限

当前登录的用户的权限存储在模板变量{{ perms }}

中。这是个 django.contrib.auth.context_processors实例的封装,他是一个对于模板友好的权限代理。

{{ perms }}

对象中,单一属性的查找是 User.has_module_perms的代理。如果已登录的用户在foo 应用中拥有任何许可,这个例子会显示 True

{{ perms.foo }}

二级属性的查找是User.has_perm的代理。

如果已登录的用户拥有foo.can_vote的许可,这个示例会显示True

{{ perms.foo.can_vote }}

所以,你可以用模板的{% if %}

语句检查权限:

{% if perms.foo %}
    <p>You have permission to do something in the foo app.</p>
    {% if perms.foo.can_vote %}
        <p>You can vote!</p>
    {% endif %}
    {% if perms.foo.can_drive %}
        <p>You can drive!</p>
    {% endif %}
{% else %}
    <p>You don‘t have permission to do anything in the foo app.</p>
{% endif %}

还可以通过{% if in %}

语句查询权限。例如:

{% if ‘foo‘ in perms %}
    {% if ‘foo.can_vote‘ in perms %}
        <p>In lookup works, too.</p>
    {% endif %}
{% endif %}
时间: 2024-12-29 19:23:54

[Django]登陆界面以及用户登入登出权限的相关文章

flask笔记:6:用户登入登出

用户登入登出需要用到 Flask-Login 插件 初始化 修改配置文件 app/__init__.py from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy import os from flask.ext.login import LoginManager app=Flask(__name__) app.config.from_object('config') db=SQLAlchemy(app) lm = L

django项目 设置session 实现用户登入登出

一.配置文件 settngs.py中 # 使用django认知系统的登录状态装饰器时,没有登录的话,跳往登录页面后路径是/acount/login 需要重新指定 LOGIN_URL = '/user/login' # 设置允许保存session SESSION_SAVE_EVERY_REQUEST = True # 设置session存放在缓存中 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 使用默认选项的缓存设置存放se

linux 中 root用户登入mysql数据库权限受限

今天发现一个奇怪问题,root用户登入mysql数据库突然变得权限受限制了,没有权限mysql库 我的解决办法是在my.cnf配置文件内增加一条 ship-grant 免密码使用root账户登入数据库,发现可以查看到所有的数据库了,这时在重新设置下root账户的权限 grant all on *.* to 'root'@'localhost' identified by 'password'; 退出mysql 取消#skip-grant 然后重启mysql服务 ,再次用root登入mysql一切

MySQL登入登出

1. 我在官网上找的下载链接,但是 下载速度比较慢,用了迅雷7,有些部分来自镜像等,但是应该也没事...下载的是 免安装版 mysql-noinstall-5.1.73-win32.zip 在 百度云(JeeHuanJing) --> MySql_in_Windows 里面,有备份保存. 2. 目录 “... ...\mysql-noinstall-5.1.73-win32\bin” 下,cmd命令: 2.1.开启 MySQL :mysqld --console;  关闭 MySQL :mysq

Django 是如何实现用户登录和登出机制的

settings.py中间件 MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', #... 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', ) 2.Django 中间件机制 request 来

Django,COOKIES,SESSION完成用户登入

1.urls.py """Django_cookie_session URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_ap

Oracle数据库任何用户密码都能以sysdba角色登入

* 本文相关环境:Windows 10,64位操作系统:Oracle 11gR2:toad for Oracle12.1 最近在学习Oracle数据库,使用Toad for Oracle来查看数据库的信息,发现在以sysdba角色登录数据库时,无论输入什么密码,均可以连接到数据库,以为是数据库又出故障了,带着疑问,查找资料.发现里面有很多的学问,下面简单记述一下. Oracle认证用户有两种方式:操作系统认证与口令认证.操作系统认证也叫本地认证. 操作系统认证:Oracle认为操作系统用户是可靠

Citrix用户登入到用户拿到桌面流程

现在很多工程师在部署Citrix项目中都会开启HTML5,用户就不需要安装Receiver,通过Web直接就可以登入到虚拟桌面,一般项目中从用户打开网页登入用户名拿到自己办公桌面一般时间都在60S内(这个是保守的,我自己做的项目都在30s-40s用户就可以拿到桌面).就在这短暂的一分钟内,我们应该清楚理清其中的过程,以便用户在出现登入故障的时候我们可以依据提示或者报错,准确的定位所存在的问题. 下面就是我根据自己在Citrix原厂培训和项目中的 一些总结. 1.首先用户通过网页访问SF站点,将用

通过登入IP记录Linux所有用户登录所操作的日志

通过登入IP记录Linux所有用户登录所操作的日志 对于Linux用户操作记录一般通过命令history来查看历史记录,但是如果在由于误操作而删除了重要的数据的情况下,history命令就不会有什么作用了.那么依然要存有历史操作记录应该如何来实现呢?其实我们可以通过登陆IP地址来记录所有用户登录所操作的历史操作!具体操作就是在/etc/profile配置文件的末尾加入以下脚本代码来实现: # History USER=`whoami` USER_IP=`who -u am i 2>/dev/nu