91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

發布時間:2020-07-05 14:22:03 來源:網絡 閱讀:10301 作者:小生博客 欄目:開發技術

小生博客:http://xsboke.blog.51cto.com

                        -------謝謝您的參考,如有疑問,歡迎交流

Django解決當擴展用戶表時,用戶繼承AbstractUser后,后臺Admin會顯示密碼為明文的問題

先看項目列表
Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

1、今天在寫一個擴展Django默認的用戶表功能時,遇到了一個問題.
先給大家看一下我寫的,擴展用戶表的models[apps.users.models],我是通過繼承AbstractUser進行擴展的(還有一種方式是引入User表,通過外鍵的形式進行擴展).

注意:
請在setting配置文件中,添加如下配置,從而修改用戶表為自定義model(我app的名字為users).
       AUTH_USER_MODEL = 'users.UserProfile'
from django.db import models

from django.contrib.auth.models import AbstractUser

# Create your models here.

class UserProfile(AbstractUser):
    user = models.CharField(max_length=30, null=True, blank=True, verbose_name="用戶")
    birthday = models.DateField(null=True, blank=True, verbose_name="出生年月")
    gender = models.CharField(max_length=8, choices=(("male", u"男"), ("female", "女"),("unknown", u"未知")), default="unknown",verbose_name="性別")
    mobile = models.CharField(max_length=11,null=True, blank=True,  verbose_name="電話")

    class Meta:
        verbose_name = '用戶'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username

2、這時候你Admin后臺就沒有之前那張用戶表了,就變成下面那個樣子了
Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

然后你就需要在你的users app中配置admin[apps.users.admin],就像為其他表配置admin一樣,我做了如下配置

from django.contrib import admin
from django.utils.translation import gettext_lazy

from apps.users.models import UserProfile
# Register your models here.

class UserProfileAdmin(admin.ModelAdmin):
    list_display = ('username','last_login','is_superuser','is_staff','is_active','date_joined')
    fieldsets = (
        (None,{'fields':('username','password','first_name','last_name','email')}),

        (gettext_lazy('User Information'),{'fields':('user','birthday','gender','mobile')}),

        (gettext_lazy('Permissions'), {'fields': ('is_superuser','is_staff','is_active',
                                                  'groups', 'user_permissions')}),

        (gettext_lazy('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )

admin.site.register(UserProfile,UserProfileAdmin)

3、然后在后臺admin中就可以看到這張表了
Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

但是當你新建用戶或者打開用戶表后發現,密碼竟然是明文的,我試過啦,直接寫密碼是不可以的,如下圖
Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

4、那么密碼字段應該是什么樣的呢,我給大家放出還未擴展用戶表時,django默認的用戶表的圖片
Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

現在我們也需要實現這種效果怎么辦,我在查閱資料之后,網上有個用戶提供了這么個方法

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from apps.users.models import UserProfile
# Register your models here.

admin.site.register(UserProfile, UserAdmin)

5、我嘗試了一下,這樣可以,但是有個問題,我自定義的字段沒有在后臺顯示,如下圖:
Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

然后我看了一下UserAdmin的源碼(在pychram中按住Ctrl鍵,然后用鼠標左鍵點擊UserAdmin,就可以看到源碼)
我們可以這樣解決,如下,通過繼承UserAdmin,然后覆蓋你想要修改的字段。

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy

from apps.users.models import UserProfile
# Register your models here.

class UserProfileAdmin(UserAdmin):
    list_display = ('username','last_login','is_superuser','is_staff','is_active','date_joined')
    fieldsets = (
        (None,{'fields':('username','password','first_name','last_name','email')}),

        (gettext_lazy('User Information'),{'fields':('user','birthday','gender','mobile')}),

        (gettext_lazy('Permissions'), {'fields': ('is_superuser','is_staff','is_active',
                                                  'groups', 'user_permissions')}),

        (gettext_lazy('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )

admin.site.register(UserProfile,UserProfileAdmin)

這時候后臺就可以顯示到我們擴展的字段了
Django解決擴展用戶表時,后臺Admin顯示密碼為明文的問題

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蓝田县| 宁武县| 榆林市| 安丘市| 于都县| 卫辉市| 桃江县| 株洲市| 五莲县| 肇州县| 旺苍县| 休宁县| 土默特左旗| 巩留县| 商城县| 辉南县| 屏东市| 霍山县| 黎平县| 中阳县| 望城县| 兴安县| 环江| 通榆县| 武定县| 九江县| 屯留县| 长宁区| 景宁| 镶黄旗| 平安县| 靖西县| 桑日县| 新沂市| 新郑市| 和平县| 安龙县| 乐昌市| 瑞昌市| 平罗县| 延庆县|