Django笔记12-完善 Admin 管理

完善 admin 管理

增加后台管理的功能

后台定制

 后台管理提供很多功能,只需要在 admin.py 模块中添加代码就行了

编辑页面显示字段

 并不是所有的字段都需要显示,比如 article 的 likes 字段,或者 category 的 article_count 字段,这些都是不同手动修改的。那就不用在编辑页面显示。

# 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)
...
Django笔记12-完善 Admin 管理_第1张图片
image

列表页面显示字段

 在列表页面时,显示更多的字段可以了解到更多的信息

# 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')
...
Django笔记12-完善 Admin 管理_第2张图片
image

搜索

 当数据过多时,要查找指定文章就显得很麻烦,所以可以添加一个搜索表单帮助查找

# 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')
...
Django笔记12-完善 Admin 管理_第3张图片
image

过滤器

 字段筛选出相应的文章

# 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')
...
Django笔记12-完善 Admin 管理_第4张图片
image

非超级用户权限

 因为这是个人博客,一般情况下只有一个超级用户,但是假如,另外还有一个非超级用户在使用这个网站,则需要有对应的权限设置。

  • 创建一个非超级用户,设置可登陆,添加权限


    Django笔记12-完善 Admin 管理_第5张图片
    image
  • 假如不修改,默认时和超级用户一样可以对所有的文章进行操作,所以要限制非超级用户只能对自己的文章进行增删改,并且只能增加类而不能删除修改。

# 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)
...
Django笔记12-完善 Admin 管理_第6张图片
image

评论

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

总结

 后台功能很多,官方文档中有详细介绍。

你可能感兴趣的:(Django笔记12-完善 Admin 管理)