Django自定義用戶(hù)2018-09-19

1. 自定義用模型

  • ① 在settings中添加聲明

# 聲明自定義模型為MyUser
AUTH_USER_MODEL = 'app.MyUser'
  • ② 在models中繼承AbstractUser類(lèi), 自定義用戶(hù)模型

    class MyUser(AbstractUser):
    """
    自定義django自帶的模型
    """
    is_delete = models.BooleanField(default=0, verbose_name='是否刪除')

    class Meta:
        permissions = (
            # (權(quán)限名, 描述)
            ('change_myuser_username', '修改用戶(hù)名'),
            ('change_myuser_password', '修改密碼'),
        )
  • ③ 在views中構(gòu)造方法add_user_permission(request)給指定用戶(hù)添加指定權(quán)限

def add_user_permission(request):
    if request.method == 'GET':
        # 給admin用戶(hù)添加修改用戶(hù)名的權(quán)限
        user = MyUser.objects.filter(username='admin').first()
        per = Permission.objects.filter(codename='change_myuser_username').first()
        # 添加權(quán)限
        user.user_permissions.add(per)
        # 刪除權(quán)限
        # user.user_permissions.add(per)
        # 清空權(quán)限
        # user.user_permissions.clear()

        return HttpResponse('添加用戶(hù)權(quán)限成功')
  • ④ 在views中構(gòu)造方法add_group_permission(request)給指定組添加指定權(quán)限

    def add_group_permission(request):
        if request.method == 'GET':
            # 創(chuàng)建審核組, 并分配查看, 和編輯
            group = Group.objects.filter(name='審核組').first()
            if group:
                per_list = [
                            'change_myuser_username',
                            'change_myuser_password',
                            'change_myuser',
                            'delete_myuser'
                            ]
                pers = Permission.objects.filter(codename__in=per_list)
                for per in pers:
                    # 添加組和權(quán)限之間的關(guān)系
                    group.permissions.add(per)
                    # 添加組和權(quán)限之間的關(guān)系
                    # group.permissions.remove(per)
                return HttpResponse(0)
    
            else:
                Group.objects.create(name='審核組')
                return HttpResponse('審核組不存在, 請(qǐng)先創(chuàng)建')
  • ⑤ 在views中構(gòu)造方法add_user_group(request)給指定用戶(hù)分配組

 def add_user_group(request):
    if request.method == 'GET':
        user = MyUser.objects.filter(username='admin').first()
        group = Group.objects.filter(name='審核組').first()
        # 給admin用戶(hù)分配組
        user.groups.add(group)

        return HttpResponse('分配成功')
  • ⑥ 在views中構(gòu)造方法user_permission(request)查看指定用戶(hù)的所有權(quán)限

def user_permission(request):
    if request.method == 'GET':
        user = MyUser.objects.filter(username='admin').first()
        # 1. 直接從用戶(hù)和權(quán)限關(guān)聯(lián)表查
        p1 = user.user_permissions.all().values('codename')
        # 2. 從組和權(quán)限關(guān)聯(lián)表查詢(xún)
        p2 = user.groups.first().permissions.all().values('codename')
        # 獲取user的所有權(quán)限
        user.get_all_permissions()
        # 獲取user所在組的權(quán)限
        user.get_group_permissions()

        return HttpResponse(p1) 
  • ⑦ 在views中構(gòu)造被permission_required('app.changge_myuser_username')修改用戶(hù)名權(quán)限修飾器修飾的方法, 該方法需要有changge_myuser_username權(quán)限的用戶(hù)才能訪問(wèn)

@permission_required('app.change_myuser_username')
def index(request):
    if request.method == 'GET':

        return render(request, 'index.html')

tips:在settings中添加LOGIN_URL= 驗(yàn)證失敗URL,會(huì)在驗(yàn)證失敗時(shí)跳轉(zhuǎn)驗(yàn)證失敗頁(yè)面

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 經(jīng)過(guò)對(duì)django的初步學(xué)習(xí),我們已經(jīng)對(duì)后臺(tái)的基本流程以及django的運(yùn)作有了一定的了解,但是這還不足夠,dja...
    coder_ben閱讀 3,969評(píng)論 8 34
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,724評(píng)論 19 139
  • http://docs.openstack.org/developer/horizon/ {官網(wǎng)} 首先我們想...
    Programmer客棧閱讀 4,469評(píng)論 3 62
  • 今天上午聽(tīng)了廣東中山紀(jì)念中學(xué)王家文老師的利用素材開(kāi)啟學(xué)生心智:利用漫畫(huà)配文章、對(duì)聯(lián)、詩(shī)詞、墻報(bào)、說(shuō)教等。 王老師又...
    孫國(guó)楊閱讀 359評(píng)論 0 6
  • 我們?cè)谀晟俚臅r(shí)候那么躁動(dòng)不安,去嘗試一些自己不能承受的刺激。高估了自己的承受能力,讓自己如此的狼狽不堪。
    見(jiàn)素抱樸守一閱讀 177評(píng)論 0 0

友情鏈接更多精彩內(nèi)容