ORM之视图层
1.request对象
前台POST传来的数据,包装到POST字典中request.POST
前台浏览器窗口携带的数据,包装到GET字典中request.GET
前台请求的方式,request.method 比如GET,或POST等
post提交的数据,body体的内容,前台会封装成:name=lqz&age=18&sex=1
request.body 是body体里的数据,是bytes类型
取出请求的路径,取不到数据部分print(request.path)
取出请求的路径,能取到数据部分print(request.get_full_path())
request.META包含了所有的数据
取出request.POST所带数据时,用get。不能用request['name']这种形式,因为万一没有值,用get程序不会崩溃,但是request['name']这种取值方式程序会崩溃。
request.get('name')取的是列表中最后一个值
request.getlist('name')取的是列表,所有值都在列表中
request往后输入. 后面可以接的红色的代表函数,蓝色和黄色代表变量
2.JsonResponse对象
JsonResponse的作用:可以传回json格式的数据,给前端进行script操作,这样可以做前后端分离。
1)在没有导入JsonResponse时,要传输json格式的数据,则要在views里导入json模块
def test(request):
import json
dic={'name':'lqz','age':18}
return HttpResponse(json.dumps(dic))
使用json模块则可以传多种数据类型
2)导入:from django.http import JsonResponse
视图函数中传递json格式数据
def test1(request):
dic = {'name': 'lqz', 'age': 18}
return JsonResponse(dic)
默认情况下只能转换字典类型数据,然后进行传输,如果要转换非字典类型,则要添加safe=False
from django.http import JsonResponse
def test1(request):
ll=['name','age']
return JsonResponse(ll,safe=False)
否则则会报错
3.cbv和fbv
cbv基于类的视图
1)路由层:url(r'^test/',views.Test.as_view()),
2)视图层
from django.views import View#导入
class Test(View):#写一个类
def get(self,request):#一定要传request对象
return HttpResponse('get-test')
def post(self,request):
return HttpResponse('post-test')
fbv基于函数的视图
4.简单文件上传
django传送文件时,前台要用enctype="multipart/form-data"形式。
提交的文件会存在request.FILES里面,是django封装的一个对象,类似字典。字典中对应关系是{名字:文件对象}
文件对象只能从request.FILES里面取出,如果这时有POST传过来的数据,那么相对应的只能从request.POST取出
注意:django只对enctype="multipart/form-data"和enctype="application/x-www-form-urlencoded"进行了处理,以上语句只在这两种形式下有用。
前台
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#只有enctype="multipart/form-data"才能传输文件#}
{#当enctype="multipart/form-data"时,<input type="text" name="name" >提交过来的数据,在POST可以找到#}
{#在django中,只有编码enctype="application/x-www-form-urlencoded"和enctype="multipart/form-data"这两种模式被 django处理过,可以直接提取POST中的数据。#}
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" >
<input type="text" name="name" >
<button>提交</button>
</form>
</body>
</html>
后台
def fileupload(request):
if request.method=='GET':
return render(request,'fileupload.html')
if request.method=='POST':
myfile=request.FILES.get('myfile')#myfile是要上传的文件对象,myfile.name是上传文件的名字
with open(myfile.name,'wb') as f:#上传到的路径是在根路径
for line in myfile:
f.write(line)
return HttpResponse('ok')
5.get请求和post请求
get:获取数据,页面,携带数据不是很重要的数据(数据量大小有限制),提交的是django封装的数据类型,类似字典,可以用get取数据
<QueryDict: {'aa': ['xx']}>
post:往后台提交数据,提交的是django封装的数据类型,类似字典,可以用get取数据。
<QueryDict: {']}>
注意,这里有点不一样 地方:
使用get请求时
<a href="update_user?id={{ user.id }}">这里?前面会自动拼接一个/
但是在post提交请求时
<form action="/update_user/?id={{ user.id }}">这里?前面不会自动拼接/
为了统一写法规范,一律加/
6.事务
from django.db import transaction
with transaction.atomic():
#两条创建
pass
把两条创建数据的命令放进事务里,要么两条都创建成功。要么其中任意一条失败,会进行回滚,都创建失败
ORM之视图层的更多相关文章
- Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API
用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...
- web框架开发-Django视图层
视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...
- django 实战篇之视图层
视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...
- Django视图层
本文目录 1 视图函数 2 HttpRequest对象 3 HttpResponse对象 4 JsonResponse 5 CBV和FBV 6 简单文件上传 回到目录 1 视图函数 一个视图函数,简称 ...
- $Django 虚拟环境,2.0、1.0路由层区别,Httprequest对象,视图层(fbv,cbv),文件上传
1 虚拟环境:解决问题同一台机器上可以运行不同版本的django, 1 用pychanrm创建--->files-->newproject--->选择虚拟环境 2 setting ...
- springboot整合视图层之jsp
在springboot中不推荐视图层使用jsp展示,但是人们以前已经习惯使用jsp,所以对jsp也有支持,但是是解耦性的.也就是说并没有像其他组件一样直接集成到启动器中,所以像jsp引擎之类的需要额外 ...
- 小程序学习笔记三:页面文件详解之视图层WXML、WXS、WXSS文件
视图层:Pages主要有 wxml页面文件和模板文件.wxs脚本文件.wxss样式文件:component是抽取出来的业务单元,同样拥有wxml页面文件和模板文件.wxs脚本文件.wxss样式文件 ...
- DjangoMTV模型之视图层views及模板层template
Django视图层中views的内容 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容(render),也可以是一个重定向( ...
- python 全栈开发,Day69(Django的视图层,Django的模板层)
昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...
随机推荐
- ftp服务器Serv-U 设置允许自动创建不存在的目录
一.由来 最近改写了项目中ftp上传部分的代码. 用到的组件为: <dependency> <groupId>commons-net</groupId> <a ...
- 7.16顺便贴一下 pep8的标准
PEP8 Python 编码规范 一 代码编排 1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格. 2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号 ...
- QQ音乐flac音乐转MP6格式怎样实现
很多时候我们所下载的音乐格式都不是MP3格式的,用起来都是有局限性的,因为很多播放器都是支持MP3格式的.很多时候为了方便使用,我们就需要将不同的音乐格式转换为MP3格式的.如flac音乐转MP3的问 ...
- Apache + PHP配置
因工作需要,重新配置了Apache和PHP.想起当年曾经配置过,但是已经忘得差不多了.而且,也没有记录.从我个人来看,确实缺乏这样的训练,从国家教育体系来看,似乎也从未有过做科学记录的训练.中国的瓷器 ...
- linux 背单词
命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat package manager 红帽子打包管 ...
- Python 正则表达式(分组)
正则表达式分组 分组就是用一对圆括号"()"括起来的正则表达式,匹配出的内容就表示一个分组.从正则表达式的左边开始看,看到的第一个左括号"("表示第一个分组,第 ...
- Improved SEO with mod_rewrite
PHP Advanced and Object-Oriented Programming Third Edition <?php //D:\wamp64\www\0613pm\w_wwwroot ...
- 请教神牛_字符串hash
针对字符串hash 我早就听闻可以暴力的干一些事情. 比如 可以... 很多很多 实现O(n)求出 模式串在文本串出现的次数. 但是我不会这什么hash. 我会自然溢出字符串hash 嘿嘿 unsig ...
- LeetCode 832 Flipping an Image 解题报告
题目要求 Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the ...
- elasticsearch安装IK分词插件
一 打开网页:https://github.com/medcl/elasticsearch-analysis-ik/releases 这个是ik相关的包,找到你想下载的版本,下载对应的zip包 二 然 ...