django 權限管理permission


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):

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM