Django中Admin站点的使用

使用Admin站点
Django能够根据定义的模型类自动地生成管理页面

  1. 创建超级管理员
    python manage.py createsuperuser
    创建用户名、密码、邮箱
  2. 打开浏览器,在地址栏中输入如下地址后回车http://127.0.0.1:8000/admin/
    输入前面创建的用户名、密码完成登录
    Django中Admin站点的使用_第1张图片
    登录成功后界面如下
    Django中Admin站点的使用_第2张图片
    但是并没有我们自己应用模型的入口,接下来进行第三步操作
  3. App应用配置
from django.apps import AppConfig

class DemoClass(AppConfig):
    name = 'demo_class'
    verbose_name = '图书管理'

将此类添加到工程settings.py中的INSTALLED_APPS列表中
4. 注册模型类
在自己应用中的admin.py文件中注册
打开demo_class/admin.py文件,编写如下代码:

from django.contrib import admin
from demo_class.models import BookInfo,HeroInfo

admin.site.register(BookInfo)
admin.site.register(HeroInfo)

到浏览器中刷新页面,可以看到模型类BookInfo和HeroInfo的管理了
5. Django提供的Admin站点的展示效果可以通过自定义ModelAdmin类来进行控制
定义管理类需要继承自admin.ModelAdmin类,如下

class BookInfoAdmin(admin.ModelAdmin):
    list_per_page = 10  # 控制列表展示数量,默认每页显示100条数据

列表中的列属性如下
展示字段,根据需求自己选择要展示的内容和属性

class BookInfoAdmin(admin.ModelAdmin):
    list_per_page = 2  # 控制列表展示数量
# 控制展示字段,字段显示顺序和列表中顺序相同
    list_display = ['id','btitle','bread','date']

    # 指定搜索字段
    search_fields = ['btitle']

    # 控制执行按钮在上面或者在下面
    actions_on_bottom = True
    actions_on_top = False

    # 设置过滤条件
    list_filter = ['bread']

    # 详情页控制
    # fields = ['bread']

    # 分组展示
    fieldsets = (
        ('基本',{'fields':['btitle','bread','image']}),
        ('高级',{'fields':['bcomment']})
    )
    inlines = [BookInfoTabularInline]

6.调整站点信息
未调整前如下图:
Django中Admin站点的使用_第3张图片
admin.site.site_header 设置网站页头
admin.site.site_title 设置页面标题
admin.site.index_title 设置首页标语

在demo_class/admin.py文件中添加以下信息:

admin.site.index_title = 'aaa'
admin.site.site_header = 'bbb'
admin.site.site_title = 'ccc'

刷新网站,效果如下
Django中Admin站点的使用_第4张图片
7. 上传图片
使用Admin站点保存图片,需要安装Python的图片操作包pip install Pillow
1)配置
我们可以将上传的文件保存在静态文件目录中,如我们之前设置的static_files目录中,在settings.py 文件中添加上传保存目录信息
MEDIA_ROOT=os.path.join(BASE_DIR,"static_files/media")
2) 为模型类添加ImageField字段
我们为之前的BookInfo模型类添加一个ImageFiled

class BookInfo(models.Model):
    image = models.ImageField(upload_to='booktest', verbose_name='图片', null=True)
    # upload_to 选项指明该字段的图片保存在MEDIA_ROOT目录中的哪个子目录

3)进行数据库迁移操作

python manage.py makemigrations
python manage.py migrate

进入Admin站点的图书管理页面,选择一个图书,能发现多出来一个上传图片的字段

你可能感兴趣的:(Django)