1.在settings.py中设置语言和时区
LANGUAGE_CODE = 'zh-hans' # 设置语言
TIME_ZONE = 'Asia/Shanghai' # 设置时间
2.创建超级管理员
首先cd到项目目录(在终端和pycharm的terminal都可以),执行命令:python manage.py createsuperuser
根据提示,依次输入用户名,邮箱,密码(不能过于简单)
现在就可以访问,http://127.0.0.1:8000/admin/或者localhost:8000/admin/进行登陆,
但是没有内容。
3.注册模型类
后台管理默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行增删改查操作。
# 默认
from django.contrib import admin
# 导入
from booktest.models import BookInfo,HeroInfo
# 注册需要管理的模型类
admin.site.register(BookInfo)
admin.site.register(HeroInfo)
进入admin站点,刷新就可以看到了。
4.定义与使用Admin管理类
Django提供的Admin站点的展示效果可以通过自定义ModelAdmin类来进行控制,定义管理类需要继承自admin.ModelAdmin类。
以下代码是,自定义对商品保存、删除以及对商品详情操作的Admin管理类,其中用到了celery异步任务,有点乱,但不妨碍对Admin管理类的理解。
from django.contrib import admin
from goods import models
from celery_tasks.static_html.tasks import generate_static_list_search_html, generate_static_sku_detail_html
# Register your models here.
class GoodsAdmin(admin.ModelAdmin):
# 商品spu表管理器
list_display = ['id', 'name']
# 创建保存商品的方法
def save_model(self, request, obj, form, change):
# obj是当前要更新的模型类对象
obj.save()
# 每当保存时,就调用生成静态页面的方法,保证静态页面是最新的数据内容
# 在这里打断点可以从前端调试看到,原始数据在initial中,更新数据在change中
generate_static_list_search_html.delay()
# 删除方法,同样需要调用生成静态页面的方法,保证信息最新
def delete_model(self, request, obj):
# 物理删除(看需求)
obj.delete()
generate_static_list_search_html.delay()
# 商品详情页
class SKUAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.save()
generate_static_sku_detail_html.delay(obj.id)
# 如果是生成测试数据,可以借助shell
admin.site.register(models.Goods,GoodsAdmin)
admin.site.register(models.SKU,SKUAdmin)