使用django的权限管理系统permission
2013-03-08 15:12
429 查看
1.为model添加权限
2.views中可以使用如下方法来操作权限
3.在template中使用权限方法:
4.permission提供的装饰器
5.user_passes_test的简便用法
6.判断是否为超级管理员的过滤器:
ok!
class Task(models.Model): ....... class Meta: permissions = ( ('oprater_task','can change the tasks'), )
2.views中可以使用如下方法来操作权限
print request.user.has_perm('conf.oprater_task') #conf为应用名,后面的为权限名 ..... myuser.user_permissions = [permission_list] #myuser为通过request.user获取的user对象 myuser.user_permissions.add(permission, permission, ...) myuser.user_permissions.remove(permission, permission, ...) myuser.user_permissions.clear()
3.在template中使用权限方法:
{% if perms.conf %} <p>You have permission to do something in the foo app.</p> {% if perms.conf.oprater_task %} <p>You can vote!</p> {% endif %} {% if perms.conf.oprater_task %} <p>You can drive!</p> {% endif %} {% else %} <p>You don't have permission to do anything in the foo app.</p> {% endif %}
4.permission提供的装饰器
from django.contrib.auth.decorators import login_required @login_required def my_view(request): # ... def user_can_vote(user): return user.is_authenticated() and user.has_perm("polls.can_vote") @user_passes_test(user_can_vote, login_url="/login/") def vote(request): # Code here can assume a logged-in user with the correct permission. ... from django.contrib.auth.decorators import permission_required @permission_required('polls.can_vote', login_url="/login/") def vote(request):
5.user_passes_test的简便用法
@user_passes_test(lambda u: u.is_superuser) #django源代码中的user_passes_test def user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME): """ 注意该函数的第一个参数 Decorator for views that checks that the user passes the given test, redirecting to the log-in page if necessary. The test should be a callable that takes the user object and returns True if the user passes. """ def decorator(view_func): @wraps(view_func, assigned=available_attrs(view_func)) def _wrapped_view(request, *args, **kwargs): if test_func(request.user): return view_func(request, *args, **kwargs) path = request.build_absolute_uri() # If the login url is the same scheme and net location then just # use the path as the "next" url. login_scheme, login_netloc = urlparse.urlparse(login_url or settings.LOGIN_URL)[:2] current_scheme, current_netloc = urlparse.urlparse(path)[:2] if ((not login_scheme or login_scheme == current_scheme) and (not login_netloc or login_netloc == current_netloc)): path = request.get_full_path() from django.contrib.auth.views import redirect_to_login return redirect_to_login(path, login_url, redirect_field_name) return _wrapped_view return decorator
6.判断是否为超级管理员的过滤器:
@user_passes_test(lambda u: u.is_superuser)
ok!
相关文章推荐
- 使用django的权限管理系统permission
- Django权限系统auth模块详解 转自:原文出处 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理。 auth可以和admin模块配合使用, 快速建
- django的权限管理系统permission
- Abp项目模板使用Oracle数据库包括系统权限管理
- 权限管理系统 ThreadLocal的使用:在同一线程中获取用户信息
- ABP+AdminLTE+Bootstrap Table权限管理系统第一节--使用ASP.NET Boilerplate模板创建解决方案
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 适合大型企业信息化应用使用的角色权限管理体系
- 记录通用权限管理系统组件使用心得体会,写技术博客赢IPad2
- 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗
- Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系统
- 通用权限管理系统使用说明
- Android权限管理之Permission权限机制及使用
- Android权限管理之Permission权限机制及使用
- 通用权限管理系统使用说明——具体
- Android开发之获取系统管理权限,即DevicePolicyManager和DeviceAdminReceiver的使用
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
- C# ASP.NET 走火入魔通用权限管理系统组件V3.2试用版下载地址【含数据库设计文档、使用手册】
- 不使用三方包时,如何在社交系统ThinkSNS中建立优雅的用户权限管理【研发日记13】
- 使用django制作文档管理系统
- C# ASP.NET 走火入魔通用权限管理系统组件V3.2试用版下载地址【含数据库设计文档、使用手册】