1.静态文件处理:{%load static from staticfiles%}
2.中间件:__init__ (self) 初始化:在服务器响应第一个请求的时候调用
process_request(self,request) 处理请求前:request对象产生之后,url匹配之前调用
process_view(self,request,view_func,*view_args,**kwargs) 处理视图前:url地址匹配之后,视图函数调用之前
process_response(self,request,response) 处理响应后:视图函数调用之后,返回HttpResponse对象
process_exception(self,request,exception) 异常处理:视图抛出异常后,返回一个HttpResponse对象
使用:在应用下创建middleware.py文件,在setting中注册
多个注册的中间件类中都有process_exception的方法,则先注册的后执行。
3.Admin站点
1)控制管理页展示:注册参数:admin.site.register(AreaInfo,AreaAdmin)
装饰器:@admin.register(AreaInfo)
def AreaAdmin(admin.ModelAdmin):
pass
2)列表页选项
页大小:list_per_page=100
顶部/底部显示的属性:action_on_top/bottom=True
列表中的列:list_display=[模型字段1,模型字段2,方法名]
排序:admin_order_field=模拟字段类,方法列不能排序
列标题:short_description='列标题',模型字段不能直接使用这个属性,将模型字段封装为方法在使用。
右侧栏过滤器:list_filter=[‘字段’]
搜索框:search_fields=[‘字段名,可以进行模糊查询’]
中文标题:在model中指定verbose_name=中文名称'
3)编辑页选项
显示字段顺序:fields=[字段名]
在下拉列表中输出对象的名称:在models中添加__str__方法.
分组显示:fieldsets=((‘组1标题’,{‘fields’:(字段)}),(‘组2标题’,{‘fields’:(字段)}))
关联对象:
(1)类型stackedInlineAdmin:表示在模型的编辑页面嵌入关联模型的编辑
创建AreaStackedInline
class AreaStackedInline(admin.StackedInline):
model = AreaInfo#关联子对象
extra = 2#额外编辑2个子对象
修改AreaAdmin
class AreaAdmin(admin.ModelAdmin):
...
inlines = [AreaStackedInline]
(2)子类TabularInline:以表格的形式嵌入。
创建TabularInline类
class AreaTabularInline(admin.TabularInline):
model = AreaInfo#关联子对象
extra = 2#额外编辑2个子对象
修改AreaAdmin类
class AreaAdmin(admin.ModelAdmin):
...
inlines = [AreaTabularInline]
4.上传图片
1)model中设置图定义模型:models.ImageField(upload_to='booktest/')
2)迁移文件
3)在setting中设置文件保存路径:MEDIA_ROOT=os.path.join(BASE_DIR,'static/media')
4)在media下创建booktest文件夹
5.分页
1)Paginator类实例对象
__init__(列表,int:每页数据的条数)
属性count:返回对象总数
属性num_pages:分页后的总页数
属性page_range:返回页码列表
方法page(m):返回Page类实例对象,表示第m页数据
2)Page类实例对象
属性object_list:返回当前页对象的列表
属性number:返回当前是第几页
属性paginator:当前页对应的Paginator对象
has_next():判断是否有下一页
has_precious():判断是否有上一页
len():返回当前页面对象的个数
precious_page_number:返回上一页页码
next_page_number:返回下一页页码