django-访问控制
from django.conf import settings
from django.shortcuts import redirect def my_view(request):
if not request.user.is_authenticated:
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
# ...
from django.shortcuts import render def my_view(request):
if not request.user.is_authenticated:
return render(request, 'myapp/login_error.html')
# ...
from django.contrib.auth.decorators import login_required @login_required
def my_view(request):
...
next_to = request.GET.get('next', None) # 获取是否有next的重定向,是一个相对路径,不含方案和域名
if next_to:
return redirect(next_to)
if user.is_active: # 若用户是活跃的,即未冻结的,在1.10之前冻结用户默认也能登录,所以需要自己认证
login(request, user) # 登录
...... #其他处理
else:
return HttpResponse('用户被冻结')
- If the user is logged in, is a staff member (User.is_staff=True), and is active (User.is_active=True), execute the view normally.
- Otherwise, the request will be redirected to the URL specified by the login_url parameter, with the originally requested path in a query string variable specified by redirect_field_name. For example: /admin/login/?next=/admin/polls/question/3/.
from django.contrib.admin.views.decorators import staff_member_required @staff_member_required
def my_view(request):
...
from django.shortcuts import redirect def my_view(request):
if not request.user.email.endswith('@example.com'):
return redirect('/login/?next=%s' % request.path)
# ...
from django.contrib.auth.decorators import user_passes_test def email_check(user):
return user.email.endswith('@example.com') @user_passes_test(email_check)
def my_view(request):
...
from django.contrib.auth.mixins import LoginRequiredMixin class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
from django.contrib.auth.mixins import UserPassesTestMixin
class MyView(UserPassesTestMixin, View):
def test_func(self):
return self.request.user.email.endswith('@example.com')
django-访问控制的更多相关文章
- [Django REST framework - RBAC-基于角色的访问控制、base64编码 、xadmin的使用]
[Django REST framework - RBAC-基于角色的访问控制.base64编码 .xadmin的使用] RBAC-基于角色的访问控制 RBAC 是基于角色的访问控制(Role-Bas ...
- 用Django写出“hell world”
一.系统实战环境 1 2 3 4 系统版本:CnetOS6.5 x86_64 Django版本:Django-1.5.8 MySQL版本:MySQL-5.1.73 Python版本: python-2 ...
- django中post方法和get方法的不同
当我们提交表单仅仅需要获取数据时就可以用GET: 而当我们提交表单时需要更改服务器数据的状态,或者说发送e-mail,或者其他不仅仅是获取并显示数据的时候就使用POST. 在这个搜索书籍的例子里,我们 ...
- Django用户认证系统(一)User对象
User对象 User对象是认证系统的核心.用户对象通常用来代表网站的用户,并支持例如访问控制.注册用户.关联创建者和内容等.在Django认证框架中只有一个用户类,例如超级用户('superuser ...
- ubuntu下配置Apache+mod_wsgi+Django项目(个人测试)
经过了一个星期的摸索,查找资料以及实验,我搭建的环境基本能用(还有就是Django后台的静态文件加载的问题) 这里面只是介绍一下我的过程,因为对应Apache还不是很熟练,特别是配置文件.只能供大家参 ...
- 【Django】 rest-framework和RestfulAPI的设计
[rest-framework] 这是一个基于django才能发挥作用的组件,专门用于构造API的. 说到API,之前在其他项目中我也做过一些小API,不过那些都是玩票性质,结构十分简单而且要求的设计 ...
- 【django之权限组件】
一.需求分析 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,一个角色拥有若干权限.这样,就构造成& ...
- Django生命周期 URL ----> CBV 源码解析-------------- 及rest_framework APIView 源码流程解析
一.一个请求来到Django 的生命周期 FBV 不讨论 CBV: 请求被代理转发到uwsgi: 开始Django的流程: 首先经过中间件process_request (session等) 然后 ...
- django restframework 跨域访问
场景介绍: 在Django开发过程中,使用前后端分离设计的站点越来越多,如Django+VUE.Django+Angular.在使用DjangoRestFramework开发API的过程中,由于前端站 ...
- django项目实际工作中的配置以及一些有用的小工具(持续更新)
常用pycharm快捷键: https://www.cnblogs.com/luolizhi/p/5610123.html Ctrl + F1 显示错误 Ctrl + Alt + Space ...
随机推荐
- ubuntu 14.04 软件中心闪退解决方案
法一: gksudo gedit /usr/share/software-center/softwarecenter/ui/gtk3/views/lobbyview.py 注释下面这句话(注释使用#号 ...
- SpringBoot与任务
(1).异步任务 package cn.coreqi; import org.springframework.boot.SpringApplication; import org.springfram ...
- ftruncate(改变文件大小)
ftruncate(改变文件大小) 定义函数 int ftruncate(int fd,off_t length); 函数说明 ftruncate()会将参数fd指定的文件大小改为参数length指定 ...
- 福利爬虫妹子图之获取种子url
import os import uuid from lxml import html import aiofiles import logging from ruia import Spider, ...
- Hyper-V虚拟机上安装一个图形界面的Linux系统
这件事情呢,一直想干但又觉得太陌生和麻烦,无奈现在到了非装不可的时候,只好硬着头皮去装.在此之前,我不懂什么叫做虚拟机,linux也接触甚少.经过3天的折腾,终于装好了带有图形界面的linux(字符版 ...
- spring+activemq配置文件内容及实现原理
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 015_NGINX作为WebSocket Proxy的设置
产研那边有通过nginx代理进行长连接的需求,咱们都知道默认nginx只支持短连接的,使用长连接需要单独配置 一. websocket协议提供创建一种支持在server和client之前双向通信的we ...
- art 校准时设备端操作
(1)准备所需文件art.ko 和 nart.out (2)配置设备的IP地址(例如:192.168.2.122),使之能与本地PC通信 (3)上传文件到设备 cd /tmp tftp -g -r ...
- 100以内的质数(for和if)
- java多线程快速入门(十六)
ThreadLocal关键字实现每个线程有自己的变量 package com.cppdy; class Number { private int num; public static ThreadLo ...