日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

使用django的权限管理系统permission

發布時間:2024/9/5 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用django的权限管理系统permission 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.為model添加權限

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 callablethat 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 orsettings.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_loginreturn redirect_to_login(path, login_url, redirect_field_name)return _wrapped_viewreturn decorator

?

6.判斷是否為超級管理員的過濾器:

@user_passes_test(lambda u: u.is_superuser)



?

ok!

轉載于:https://www.cnblogs.com/chenjianhong/archive/2013/03/08/4144818.html

總結

以上是生活随笔為你收集整理的使用django的权限管理系统permission的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。