pythondjango有什么功能

静态文件

·将静态文件放到一个单独的目录中,以方便管理

- 静态文件可以放在项目根目录下,也可以放在应用的目录下

- 由于有些静态文件在项目中是通用的,所以推荐放在项目的根目录下,方便管理

·在项目的setting文件中,通过STATICFILES_DIRS列表配置静态文件的加载路径

·在html页面调用静态文件时,需要指定静态文件所在的路径

·为了安全和方便维护,可以通过配置项达到隐藏真实静态文件路径的目的

- 使用static标签,根据配置项动态生成静态文件路径(结合Nginx布署时,会将所有的静态文件都交给Nginx处理,而不用转到Django部分,所以这项配置就无效了,这个功能有些鸡肋!)

#反向解析加载静态图片路径

{% load staticfiles %}    

{% static 'images/01.jpg'%}

中间件

·概念:Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出;中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性,其它的MVC框架也有这个功能,名称为IoC。

·使用场景:当某些操作在每次请求或响应时都会执行时,可以写在中间件中

·设计思想:面向切面编程/无侵害式编程

# 中间件方法(Django在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预)

1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件

def __init__():

    pass

2.处理请求前:在每个请求上调用,返回None或HttpResponse对象

def process_request(request):

    pass

3.处理视图前:在每个请求上调用,返回None或HttpResponse对象

def process_view(request, view_func, view_args, view_kwarge):

    pass

4.处理模板相应前:在每个请求上调用 ,返回实现了render方法的相应对象

def process_temlate_pesponse(request, response):

    pass

5.处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象

def process_response(request, response):

    pass

6.异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象

def process_exception(request, exception)

# 自定义中间件

- 中间件是一个独立的python类,可以定义这六个方法中的一个或多个

- 在应用中新建middleware.py文件,在文件中定义类TestMiddleware

- 配置自定义中间件:应用.文件名.类名 == Book.middleware.TestMiddleware

#如果多个中间件中注册了相同的方法,则先注册的后执行

相关推荐:《Python教程》

站点管理

·内容发布的部分由网站的管理员负责,包括查看、添加、修改、删除数据

·Django项目中默认启用Admin管理站点:列表页选项, 编辑页选项, 重写模板

#准备工作

启用mysql数据库+定义AreaInfo模型类+创建管理员+注册模型类

再 重写模型__str__

# 控制站点管理页的展示

- 类ModelAdmin可以控制模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式

- 注册模型类前定义管理类AreaAdmin

class AreaAmin(admin.ModelAdmin):

    pass

- 管理类有两种使用方式

1.注册参数

admin.site.register(AreaInfo, AreaAdmin)

2.装饰器

@admin.register(AreaInfo)

class AreaAmin(admin.ModelAdmin):

    pass

列表页选项

·页大小

#设置每页展示的条数,默认每页显示100条

list_per_page = 100

·操作选项Action的位置:默认在管理页面的顶部有一个,管理页面底部没有

# 在头部增加一个

actions_on_top = True

# 在底部增加一个

actions_on_bottom = False

·列表中的列: 指定在模型列表中显示哪些字段作为列

# 指定展示的字段

list_display = [字段1, 字段2, ...]

 # 定义模型方法作为列

def title(self):

      return self.name

# 指定方法作为列的排序依据

title.admin_order_field = 'name'

·模型方法为列:模型方法和模型字段都指定为列显示在管理界面上

·列标题:默认为属性或方法的名称,可以通过属性设置为其他名称。设置方式

1.short_description 属性设置

            -  方法名.short_description = '列标题

2.verbose_name 属性设置

右侧栏过滤器:只能接收字段,会将对应字段的值列出来,用于快速过滤,一般用于有重复值的字段

list_filter = ['字段1', '字段2', ...]

搜索框:用于对指定字段的值进行搜索,支持模糊查询

search_fields = ['字段1', '字段2', ...]

编辑页选项

·字段顺序:根据列表顺序指定编辑界面字段顺序

fields = ['字段1', '字段2', ...]

·字段分组:字段分组fieldsets与字段顺序fields二选一使用

fieldsets = (

        ('组1标题', {'fields': ('字段1', '字段2')}),

        ('组2标题', {'fields': ['字段3', '字段4']}),

 )

·关联对象

在一对多的关系中,可以在一端的编辑页面中编辑多端的对象

    - 嵌入多端对象的方式包括表格、块两种

类型InlineModelAdmin:表示在模型的编辑页面嵌入关联模型的编辑

    - 子类StackedInline:以块的形式嵌入

    - 子类TabularInline:以表格的形式嵌入

在admin.py文件中,创建AreaStackedInline类,继承自admin.StackedInline

重写模板

·当我们需要修改站点管理页面的样式时,可以重写站点的模板

在templates 目录下创建 admin目录

再在admin文件下创建base_site.html

上传图片

·两种方式上传图片(上传后,将图片存储在项目静态文件中,然后将图片的路径存储在数据库表中)

    ·在站点管理页面中上传图片

    ·自定义form表单中上传图片

# 保存在static目录下,media表示多媒体文件目录,图片上传后保存的路径:static/media/Book

# 在settings中,配置图片上传后保存的目录

MEIA_ROOT=os.path.join(BASE_DIR, 'static/media')

# 后台站点上传图片

# 自定义表单上传图片

chunks() 保证数据安全

分页

·Django提供了数据分页类,定义在django.core.paginator中

·对象Paginator是用来进行分页处理的,可以把一组数据按照每页n条进行分隔

·对象Page用于表示第m页的数据

#Paginator对象

方法init(列表,int):返回分页对象,参数为列表数据,每面数据的条数

方法page(m):返回Page对象,表示第m页的数据,下标以1开始

属性page_range:返回页码列表,从1开始,例如[1, 2, 3, 4]

属性count:返回对象总数

属性num_pages:返回页面总数

#Page对象

调用Paginator对象的page()方法返回Page对象,不需要手动构造

属性number:返回当前是第几页,从1开始

属性paginator:当前页对应的Paginator对象

方法has_next():如果有下一页返回True

方法has_previous():如果有上一页返回True

属性object_list:返回当前页对象的列表

方法len():返回当前页面对象的个数

以上是 pythondjango有什么功能 的全部内容, 来源链接: utcz.com/z/537421.html

回到顶部