最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python django有什么功能

    正文概述    2020-05-08   269

    python django有什么功能

    静态文件

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

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

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

    ·在项目的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():返回当前页面对象的个数

    起源地下载网 » python django有什么功能

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元