Django筆記12-完善 Admin 管理

完善 admin 管理

增加后臺(tái)管理的功能

后臺(tái)定制

?后臺(tái)管理提供很多功能,只需要在 admin.py 模塊中添加代碼就行了

編輯頁(yè)面顯示字段

?并不是所有的字段都需要顯示,比如 article 的 likes 字段,或者 category 的 article_count 字段,這些都是不同手動(dòng)修改的。那就不用在編輯頁(yè)面顯示。

# blog/admin.py
from django.contrib import admin
from .models import Category, Article

# Register your models here.
class ArticleAdmin(admin.ModelAdmin):
    # fields 添加要顯示的字段名稱
    fields = ('title', 'author', 'category', 'body', 'abstract')

class CategoryAdmin(admin.ModelAdmin):
    fields = ('name', 'instructions')

admin.site.register(Category, CategoryAdmin)
admin.site.register(Article, ArticleAdmin)
...
image

列表頁(yè)面顯示字段

?在列表頁(yè)面時(shí),顯示更多的字段可以了解到更多的信息

# blog/admin.py
...
class ArticleAdmin(admin.ModelAdmin):
    # list_display 字段中添加要顯示的字段名稱
    list_display = ('title', 'author', 'category', 'likes', 'create_time')
    fields = ('title', 'author', 'category', 'body', 'abstract')

class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'instructions')
    fields = ('name', 'instructions')
...
image

搜索

?當(dāng)數(shù)據(jù)過(guò)多時(shí),要查找指定文章就顯得很麻煩,所以可以添加一個(gè)搜索表單幫助查找

# blog/admin.py
...
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'category', 'likes', 'create_time')
    # 在 search_fields 中添加字段名稱,作為搜索字段
    search_fields = ('title',)
    fields = ('title', 'author', 'category', 'body', 'abstract')

class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'instructions')
    search_fields = ('name',)
    fields = ('name', 'instructions')
...
image

過(guò)濾器

?字段篩選出相應(yīng)的文章

# blog/admin.py
...
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'category', 'likes', 'create_time')
    search_fields = ('title',)
    # 根據(jù) 類別篩選文章
    list_filter = ('category',)
    fields = ('title', 'author', 'category', 'body', 'abstract')
...
image

非超級(jí)用戶權(quán)限

?因?yàn)檫@是個(gè)人博客,一般情況下只有一個(gè)超級(jí)用戶,但是假如,另外還有一個(gè)非超級(jí)用戶在使用這個(gè)網(wǎng)站,則需要有對(duì)應(yīng)的權(quán)限設(shè)置。

  • 創(chuàng)建一個(gè)非超級(jí)用戶,設(shè)置可登陸,添加權(quán)限


    image
  • 假如不修改,默認(rèn)時(shí)和超級(jí)用戶一樣可以對(duì)所有的文章進(jìn)行操作,所以要限制非超級(jí)用戶只能對(duì)自己的文章進(jìn)行增刪改,并且只能增加類而不能刪除修改。

# blog/admin.py
...
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'category', 'likes', 'create_time')
    search_fields = ('title',)
    list_filter = ('category',)
    fields = ('title', 'author', 'category', 'body', 'abstract')
    
    def get_queryset(self, request):
        article_list = super(ArticleAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return article_list
        else:
            return article_list.filter(author=request.user)
...
image

評(píng)論

# comment/admin.py
from django.contrib import admin
from .models import Comment
# Register your models here.
class CommentAdmin(admin.ModelAdmin):
    fields = ('user', 'article', 'body')
    list_filter = ('article',)
    list_display = ('user', 'article')
    
    def get_queryset(self, request):
        comment = super(CommentAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return comment
        else:
            return comment.filter(user=request.user)
admin.site.register(Comment, CommentAdmin)

總結(jié)

?后臺(tái)功能很多,官方文檔中有詳細(xì)介紹。

?著作權(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)容

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