views层回顾

jsonResponse

  • 导入 from django.http import JsonResponse

  • 默认返回字典,通过safe=false返回类表,其他类型

  • 出现乱码通过字典参数形式传递json_dump_encode={"ensure_ascii": True}

  • 底层实现的json模块

  • 实现前后端分离

  • 后端给前端返回一个json格式的字段穿

json.dumps(data, clas=自定义类名(可以实现其他序列化), ensure_ascii=False)

2 大文件上传

  • 表单提交必须是post请求
  • 必须制定form中entype参数为formdata类型,
  • 后端接收request.Files来获取大文件,也可以获取文件中的名字
  • 保存文件,通过for循环方式,for chunk in obj_file.chunks()
  • chunks可以设置接收文件的大小

3. cbv和fbv源码分析

1.自定义类并集成views

2.配置url('^$', views.MyCbv.as_views()), as_views是类的绑定方法,当程序启动时,实际访问的地址是views.view,

3.当浏览器方式请求,进入url中寻找对应的请求方式,view()方法中执行一些操作之后,return 调用dispathch方法,在查找

dispathch方法时候,注意属性和方法的查找顺序

4.在dispath方法中判断,当前的请求方式是否在八大请求之中,如果在则通过反射机制,到自定义类中去映射对应的方法,若映射不到

则会报错,如果请求方式不再八大请求方式中,则会报错,如果请求方式不再八大请求方式中,则会报错,如果请求方式不再八大请求方式中,则会报错,如果请求方式不再八大请求方式中,则

5.执行反射获取到自定义类中的方法

4settings.py源码分析

实现原理有Django有两个配置文件,一个是用户可以修改,一个用户不可以修改,通过用户修改的方式覆盖底层配置,底层通过先读取django没有暴露的配置文件进行保存setattr方法,在查询用户配置settings.py文件,然后覆盖默认底层配置文件

5模板传值{{}} {%%}

{{}} 变量相关

  • int、folat、str、dict、list、set、tuple、bool、
  • 函数(不可以传值)、类对象(类方法,对象绑定方法、普通方法),都是直接运行
  • 常用过滤器,add length slice safe default filesizeformat truncatechars
  • 通过句柄获取值 . 只能通过点的方式,可以一直点下去

{%%}逻辑相关

  • if 条件:{% if %} ... {% elif %} .... {%else%} .... {%endif%}

  • for循环:{% for %}(支持字典,列表,items,keys,values)

    ​ .....

    ​ {{forloop}}

    ​ fist

    ​ last

    ​ counter

    ​ counter0

    ​ empty

    ​ {% ednfor %}

  • with 起别名: {% with .... as 名字%} {% endwith %}

6. 过滤器和标签和自定义

  1. 在应用下创建一个templatetags文件夹,名字必须是这个名字

  2. 在文件夹中创建任意.py文件

  3. 在py文件中写入固定两行代码

    from django.template import Library
    register = Library() # register名字必须是这个 # 自定义过滤器
    # 自定义过滤器
    @register.filter(name='my_add')
    def my_add(a, b):
    return a + b # 自定义标签
    @register.simple_tag(name='my_list')
    def my_list(a, b, c, d):
    return f'[{a},{b},{c},{d}]'
    区别 标签不能再if中使用
    {% if 0|myplus:123 %} 可以用
    <p>有值</p>
    {% endif %} {% if mysm 1 2 3 4 %} 不能用
    <p>有值</p>
    {% endif %}

7模板的继承

事先需要再模板中 通过block划定区域

  • 划定区域可以改变 {% block 区域名字%} ..... {% endblock %}

  • 引用html:{% extends '模板名字' %}

  • 在子模板中修改区域:{% block 父类划分区域的名字 %}

  • 一个页面上 block块越多 页面的扩展性越高,通常情况下 都应该有三片区域

    {% block css %}

    {% endblock %}

    {% block content %}

    {% endblock %}

    {% block js %}

    {% endblock %}

    子板中还可以通过:{{ block.super }} 来继续使用母版的内容

8模板的导入

当你写了一个特别好看的form表单 你想再多个页面上都使用这个form表单,你就可以将你写的form表单当作模块的形式导入 导入过来之后 就可以直接展示

{% include 'good_page.html' %}

views层回顾的更多相关文章

  1. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...

  2. Python开发入门与实战12-业务逻辑层

    12. Biz业务层 前面的章节我们把大量的业务函数都放在了views.py里,按照目前这一的写法,当我们编写的系统复杂较高时,我们的views.py将会越来越复杂,大量的业务函数包含其中使其成为一个 ...

  3. contenttype组件、Django缓存机制以及跨域请求

    1 昨日回顾 版本控制 *** (1)url=127.0.0.1/course/?version=v100000 1 versioning_class=QueryParameterVersioning ...

  4. drf框架(2)

    drf框架 """接口: 接口规范: drf的生命周期: 序列化组件: 三大认证:过滤,删选,排序组件 请求,响应,解析,异常 jwt:json web tooken & ...

  5. 利用django框架,手把手教你搭建数据可视化系统(一)

    如何使用django去构建数据可视化的 web,可视化的结果可以呈现在web上. 使用django的MTV模型搭建网站 基础铺垫-MTV模型 Created with Raphaël 2.1.0Req ...

  6. drf基础知识01

    drf框架 """ 接口: 接口规范: drf生命周期: 序列化组件: 三大认证组件: 过滤.筛选.排序.分页组件: 请求.响应.解析.异常模块: jwt: " ...

  7. django 富文本展示 以及 post提交出错

    1.富文本转义 使用 {{ content.record.content | safe }} 2.post提交报错 页面表单内追加 <form id="f"action=&q ...

  8. CI框架分页类代码

    model层  ;     $page = $);     ;      }else{         $start = $page;       }     $data['results'] = $ ...

  9. 27、oracle(三)

    1)掌握增.删.改数据和事务操作 2)掌握[视图]和同义词 3)掌握[序列]和索引 4)了解有关用户和权限的控制 ------------------------------------------- ...

随机推荐

  1. js面试之数组的几个不low操作

    1.扁平化n维数组 1.终极篇 [1,[2,3]].flat(2) //[1, 2, 3] [1,[2,3,[4,5]]].flat(3) //[1, 2, 3, 4, 5] [1,[2,3,[4,5 ...

  2. Dijkstra--The Captain

    *传送 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. 先给一段证明:给定三个x值,x1<x2<x ...

  3. HZNU-ACM寒假集训Day8小结 最小生成树

    最小生成树(无向图) Kruskal 给所有边按从小到大排序 形成环则不选择(利用并查集) P1546 最短网络   https://www.luogu.com.cn/problem/P1546 #i ...

  4. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程序员的博客平台 开发者为什么要写作 写作平台 第三方博客平台 自建博客平台 开发论坛 1 ...

  5. python函数-装饰器

    python函数-装饰器 1.装饰器的原则--开放封闭原则 开放:对于添加新功能是开放的 封闭:对于修改原功能是封闭的 2.装饰器的作用 在不更改原函数调用方式的前提下对原函数添加新功能 3.装饰器的 ...

  6. Tmux和一点nohup

    1.当我们用ssh连接服务器时,只有一个终端,但有时候我们希望有多个. 2.有些程序需要运行一些时间,在这个时间里,我们希望可以去做其他的事情. 3.有的程序要跑好几个小时,这时候,我们希望断开远程连 ...

  7. 进度4_家庭记账本App

    在上一个博客中,我学习了用Fragment进行数据的传值,但是出现了好多问题,我通过百度查阅资料发现fregment在进行数值传输的时候有的语法不能使用,并且不方便的进行数据库的使用,所以我在原来的家 ...

  8. 强大的代码生成器——T4模板

    T4 Editor工具下载地址 tangible T4 Editor 2.5.0 plus modeling tools for VS 2019 https://marketplace.visuals ...

  9. 程序员用 Python 扒出 B 站那些“惊为天人”的UP主!

    ​ 前言 ! 近期B站的跨年晚会因其独特的创意席卷各大视频网站,给公司带来了极大的正面影响,股价也同时大涨,想必大家都在后悔没有早点买B站的股票: ​ 然而今天我们要讨论的不是B站的跨年晚会,而是B站 ...

  10. 当我们进行综合和I/O布局后会发生什么QwQ

    基于的平台是Vivado 2018.2 本文主要以一个简单的半加器加器(组合逻辑为例)学习vivado的综合,I/O配置的一些内容. 本人小白,记一些自己的理解. 任务: 分析Log文件. 布局I/O ...