使用Admin站点
Django能够根据定义的模型类自动地生成管理页面
python manage.py createsuperuser
http://127.0.0.1:8000/admin/
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.调整站点信息
未调整前如下图:
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'
刷新网站,效果如下
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站点的图书管理页面,选择一个图书,能发现多出来一个上传图片的字段