django-表单和admin站点

'''
1.表单


django内置表单的内容, 使用forms模块的Form类
在单独的forms.py文件中创建表单类和创建模型类的方法很像, 然后视图类用到表单,实例对象就可以


Form类中内置一些方法,提供我们使用
比如:form = BookForm(request.POST) post上传的请求数据,通过自定义的表单类拿出
    form.is_valid() 验证表单数据的合法性
    form.cleaned_data 获取验证后的表单数据
    
快速创建表单:
表单中的数据与模型类对应,通过指定是哪个模型类
class BookForm(forms.ModelForm): # 必须继承ModelForm
    class Meta:
        model = BookInfo    # model 指明从属于哪个模型类
        fields = ('btitle', 'bpub_date')    # fields 指明向表单中添加模型类的哪个字段
'''




'''
2.admin


创建管理员 python manage.py createsuperuser
admin站点是管理数据库模型的
需要注册进去 admin.py :   admin.site.register(BookInfo)


默认的功能不能满足,需要定制化,自定义admin效果, 必须继承admin中ModelAdmin
class BookInfoAdmin(admin.ModelAdmin):
    # 具体添加的功能
    
使用自定义的模型管理器(注册进去)
方法1:放到第二个参数 admin.site.register(BookInfo,BookInfoAdmin)
方法2:@admin.register(BookInfo)
     class BookInfoAdmin(admin.ModelAdmin):
'''




'''
3.admin定制化 -> 列表页


(1)每页中显示多少条数据: list_per_page = num
(2)操作选项 的位置 : actions_on_top=True
                actions_on_bottom=False
(3)列表中的列 : list_display=['id','btitle',...]
(4)将函数方法作为列 : 设置short_description属性
注意class BookInfo(models.Model): 定义的方法是在模型类中,然后short_description把方法可以当做字段来用
    def pub_date(self):
        return self.bpub_date.strftime('%Y年%m月%d日') 改变时间的显示格式,定义一个方法
    pub_date.short_description = '发布日期'  函数方法.short_description # 设置方法为字段在admin中显示的标题
admin中:    
    list_display = ['id','btitle','pub_date']  # 这样就可以把方法当做字段写进去
(5)方法列是不能排序的,如果需要排序需要为方法指定排序依据。
    admin_order_field=模型类字段  注意也是在模型类中
(6)关联对象:无法直接访问关联对象的属性或方法,可以在模型类中封装方法,访问关联对象的成员。
    def read(self):
        return self.hbook.bread
    read.short_description = '图书阅读量'   
(7)右侧栏过滤器 
 list_filter = ['hbook', 'hgender']
(8)搜索框
search_fields = ['hname']
'''




'''
4.admin定制化 -> 详情编辑页


(1) 显示字段 : fields = ['btitle', 'bpub_date'] 详情页只显示这两个字段
(2)分组显示 : fieldsets = (
                ('基本', {'fields': ['btitle', 'bpub_date']}),
                ('高级', {
                    'fields': ['bread', 'bcomment'],
                    'classes': ('collapse',)  # 是否折叠显示})
                )


(3)关联对象 (嵌入)
在一对多的关系中,可以在一端的编辑页面中编辑多端的对象,嵌入多端对象的方式包括表格、块两种。
子类TabularInline:以表格的形式嵌入。
子类StackedInline:以块的形式嵌入。
块: 自定义 class HeroInfoStackInline(admin.StackedInline):
            model = HeroInfo  # 要编辑的对象
            extra = 1  # 附加编辑的数量


在 BookInfoAdmin(admin.ModelAdmin) 中 嵌入 inlines = [HeroInfoStackInline]


表格: 自定义 class HeroInfoTabularInline(admin.TabularInline):  就是继承的不同
                model = HeroInfo
                extra = 1
嵌入 inlines = [HeroInfoTabularInline]




站点信息:


admin.site.site_header 设置网站页头
admin.site.site_title 设置页面标题
admin.site.index_title 设置首页标语
比如:
admin.site.site_header = '传智书城'
admin.site.site_title = '传智书城MIS'
admin.site.index_title = '欢迎使用传智书城MIS'




上传图片:
pip install Pillow
配置:
MEDIA_ROOT=os.path.join(BASE_DIR,"static_files/media")
添加字段:
image = models.ImageField(upload_to='booktest', verbose_name='图片', null=True)
upload_to 选项指明该字段的图片保存在MEDIA_ROOT目录中的哪个子目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值