1.為模型類添加權限
from django.db import models from django.utils.translation import ugettext_lazy as _ class Monitor(models.Model): ...... class Meta: verbose_name = _(u'設備信息') verbose_name_plural = verbose_name db_table = 'monitor' permissions = ( ('can_import_device', _(u'批量導入設備')), ('can_browse_monitor', _(u'瀏覽設備列表')), )
2.views中可以使用如下方法來操作權限
print request.user.has_perm('appname.can_import_device') #appname為應用名,后面的為權限名 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.appname %} <!--appname為應用名--> <p>你有些權限可以操作</p> {% if perms.appname.can_import_device %} <p>你可以導入設備</p> {% endif %} {% if perms.appname.can_browse_monitor %} <p>你可以瀏覽設備!</p> {% endif %} {% else %} <p>無權限.</p> {% endif %}
4.permission提供的裝飾器
from django.contrib.auth.decorators import login_required @login_required def my_view(request): # ... def user_can_import(user): return user.is_authenticated() and user.has_perm("appname.can_import_device") @user_passes_text(user_can_import, 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('appname.can_browse_monitor', login_url="/login/") def browse_monitor(request):