7.7admin站点

7.7admin站点

7.7.1使用步骤

(1)管理界面本地化

(2)创建管理员

(3)注册模型类

(4)自定义管理页面

7.7.2管理界面本地化

在settings.py中设置语言和时区

LANGUAGE_CODE = 'zh-hans' # 使用中国语言

TIME_ZONE = 'Asia/Shanghai' # 使用中国上海时间

7.7.3创建超级管理员

python manage.py createsuperuser

如果想要修改密码可以执行

python manage.py changepassword 用户名

7.7.4注册模型类

admin.site.register(BookInfo)

admin.site.register(HeroInfo)

7.7.5定义模型类站点管理类

(1)方式一

class BookInfoAdmin(admin.ModelAdmin):

""图书模型类管理类"""

pass

admin.site.register(models.BookInfo,BookInfoAdmin)

(2)方式二

@admin.register(models.HeroInfo)

class HeroInfoAdmin(admin.ModelAdmin)

"""英雄模型类管理类"""

pass

注意:使用了装饰器后,就不用再调用admin.site.register()

7.7.6调整列表页展示

(1)页大小

# 每页中显示多少条数据

list_per_page = 2

(2)“操作选项”的位置

actions_on_bottom = True

(3)列表中的列

list_display = ['模型字段1','模型字段2',...]

(4)将方法作为列

BookInfo:

①在模型类中添加方法:

def new_pub_date(self):

    """将日期格式化成字符串输出"""

    return self.bpub_date.strftime('%Y-%m-%d')

    # return datetime.strftime(self.bpub_date,'%Y-%m-%d')

    new_pub_date.short_description = '发布日期'

    new_pub_date.admin_order_field = 'bpub_date' # 指定排序依据

②在admin.py中将方法名添加到要显示的列中

HeroInfo:

# 右侧过滤栏

list_filter = ['hbook','hgender']

# 顶部搜索栏

search_fields = ['hname']

(5)关联对象

无法直接访问关联对象的属性或方法,可以在模型类中封装方法,访问关联对象的成员。

1)打开booktest/models.py文件,修改HeroInfo类如下:

class HeroInfo(models.Model):

    ...

    def read(self): return self.hbook.bread

    read.short_description = '图书阅读量'

2)打开booktest/admin.py文件,添加到列

list_display = ['id','hname','hbook','read']

7.7.7调整编辑页展示

(1)字段

1)允许展示编辑的字段

fields = ['btitle','bpub_date']

2)允许展示编辑的字段分组

fieldsets = ( ('基本', {'fields': ['btitle', 'bpub_date']}), ('高级', { 'fields': ['bread', 'bcomment'], 'classes': ('collapse',) # 是否折叠显示 }) )

注意:fields与fieldsets两者只能选一使用

(2)关联对象

在一对多的关系中,可以在一端的编辑页面中编辑多端的对象,嵌入多端对象的方式包括表格、块两种

  • 类型InlineModelAdmin:表示在模型的编辑页面嵌入关联模型的编辑。
  • 子类TabularInline:以表格的形式嵌入。
  • 子类StackedInline:以块的形式嵌入。

1)以块的形式嵌入

准备关联的类

①打开booktest/admin.py文件,创建HeroInfoStackInline类。

class HeroInfoStackInline(admin.StackedInline):

    model = HeroInfo # 要编辑的对象

    extra = 1 # 附加编辑的数量

添加关联

②打开booktest/admin.py文件,在BookInfoAdmin类中添加:

inlines = [HeroInfoStackInline]

2)以表格的形式嵌入

①打开booktest/admin.py文件,创建HeroInfoTabularInline类。

class HeroInfoTabularInline(admin.TabularInline):

    model = HeroInfo

    extra = 1

②打开booktest/admin.py文件,在BookInfoAdmin类中添加: inlines = [HeroInfoTabularInline]

7.7.8调整站点全局页面信息

  • admin.site.site_header 设置网站页头
  • admin.site.site_title 设置页面标题
  • admin.site.index_title 设置首页标语

7.7.9站点上传图片

(1)安装图片处理模块

pip install Pillow

(2)指定上传的文件的存储位置

static_files—>media—>book

在settings.py 文件中添加如下上传保存目录信息:

 

MEDIA_ROOT=os.path.join(BASE_DIR,"static_files/media")

(3)模型类准备image上传字段

为BookInfo模型类添加一个ImageFiled

image = models.ImageField(upload_to='book', verbose_name='图书图片', null=True)

(4)迁移

python manage.py makemigrations

python manage.py migrate

发布了51 篇原创文章 · 获赞 2 · 访问量 5940
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章