views层回顾
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. 过滤器和标签和自定义
在应用下创建一个templatetags文件夹,名字必须是这个名字
在文件夹中创建任意.py文件
在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层回顾的更多相关文章
- Django基础之视图(views)层、模板层
目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...
- Python开发入门与实战12-业务逻辑层
12. Biz业务层 前面的章节我们把大量的业务函数都放在了views.py里,按照目前这一的写法,当我们编写的系统复杂较高时,我们的views.py将会越来越复杂,大量的业务函数包含其中使其成为一个 ...
- contenttype组件、Django缓存机制以及跨域请求
1 昨日回顾 版本控制 *** (1)url=127.0.0.1/course/?version=v100000 1 versioning_class=QueryParameterVersioning ...
- drf框架(2)
drf框架 """接口: 接口规范: drf的生命周期: 序列化组件: 三大认证:过滤,删选,排序组件 请求,响应,解析,异常 jwt:json web tooken & ...
- 利用django框架,手把手教你搭建数据可视化系统(一)
如何使用django去构建数据可视化的 web,可视化的结果可以呈现在web上. 使用django的MTV模型搭建网站 基础铺垫-MTV模型 Created with Raphaël 2.1.0Req ...
- drf基础知识01
drf框架 """ 接口: 接口规范: drf生命周期: 序列化组件: 三大认证组件: 过滤.筛选.排序.分页组件: 请求.响应.解析.异常模块: jwt: " ...
- django 富文本展示 以及 post提交出错
1.富文本转义 使用 {{ content.record.content | safe }} 2.post提交报错 页面表单内追加 <form id="f"action=&q ...
- CI框架分页类代码
model层 ; $page = $); ; }else{ $start = $page; } $data['results'] = $ ...
- 27、oracle(三)
1)掌握增.删.改数据和事务操作 2)掌握[视图]和同义词 3)掌握[序列]和索引 4)了解有关用户和权限的控制 ------------------------------------------- ...
随机推荐
- java IO 流关系图谱
学习io流最好明白其之间的 关联与转换关系 ,以下是笔者所划得 关系图谱,大框包含小框 ,小框是大框内的 请求参数,箭头是继承或实现. 清晰了其关联与包含关系后我们便很容易在现实中结合使用了 . 这是 ...
- es6的...
es6的... (1):函数rest参数和扩展 sum1(...sum){//传多个参数 let total=0; for( ...
- UVA - 11105 Semi-prime H-numbers(H-半素数)
题意:所有形如4n+1(n为非负整数)的数叫H数.定义1是唯一的单位H数,H素数是指本身不是1,且不能写成两个不是1的H数的乘积.H-半素数是指能写成两个H素数的乘积的H数(这两个数可以相同也可以不同 ...
- AD走圆弧走线
美式键盘: “shift + 空格”
- export环境变量
/etc/profile和/etc/profile.d/区别 [root@zzx conf]# vim /etc/profile.d/tomcat.sh 添加如下内容再运行脚本就可以添加环境变量 ...
- SpringMVC错误,商品添加信息HTTP Status 400 – Bad Request
记录一个自己在做商品信息显示与传递数据的时候出现的错误, HTTP Status 400 – Bad Request Type Status Report Description The server ...
- 实验吧web-中-忘记密码了
打开网页,查看源代码,好像发现了管理员邮箱而且还是用vim编辑的. 我们提交一下这个邮箱,虽然提交成功了,但好像并没什么用. 我们随便提交一个,会弹出 看来好像还有个step2呢,我们查看源代码(在这 ...
- UVA - 1631 Locker(密码锁)(dp---记忆化搜索)
题意:有一个n(n<=1000)位密码锁,每位都是0~9,可以循环旋转.每次可以让1~3个相邻数字同时往上或者往下转一格.输入初始状态和终止状态(长度不超过1000),问最少要转几次. 分析: ...
- 工程日记之HelloSlide(3):如何使用Core Data数据库,以及和sqlite之间的对应关系
Core Data 和 SQLite 是什么关系 core data是对sqlite的封装,因为sqlite是c语言的api,然而有人也需要obj-c的api,所以有了core data ,另外,co ...
- GRUB&MBR引导
(ubuntu下搜索gnome-disk可以打开磁盘管理) 简单开机过程 : ①按下电源后,计算机自检(POST),如果硬件设备(CPU.内存.硬盘.光驱.各种卡)都没有问题,BIOS会检查各个硬盘的 ...