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之视图层的更多相关文章

  1. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

  2. web框架开发-Django视图层

    视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...

  3. django 实战篇之视图层

    视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...

  4. Django视图层

    本文目录 1 视图函数 2 HttpRequest对象 3 HttpResponse对象 4 JsonResponse 5 CBV和FBV 6 简单文件上传 回到目录 1 视图函数 一个视图函数,简称 ...

  5. $Django 虚拟环境,2.0、1.0路由层区别,Httprequest对象,视图层(fbv,cbv),文件上传

    1 虚拟环境:解决问题同一台机器上可以运行不同版本的django,  1 用pychanrm创建--->files-->newproject--->选择虚拟环境  2 setting ...

  6. springboot整合视图层之jsp

    在springboot中不推荐视图层使用jsp展示,但是人们以前已经习惯使用jsp,所以对jsp也有支持,但是是解耦性的.也就是说并没有像其他组件一样直接集成到启动器中,所以像jsp引擎之类的需要额外 ...

  7. 小程序学习笔记三:页面文件详解之视图层WXML、WXS、WXSS文件

      视图层:Pages主要有 wxml页面文件和模板文件.wxs脚本文件.wxss样式文件:component是抽取出来的业务单元,同样拥有wxml页面文件和模板文件.wxs脚本文件.wxss样式文件 ...

  8. DjangoMTV模型之视图层views及模板层template

    Django视图层中views的内容 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容(render),也可以是一个重定向( ...

  9. python 全栈开发,Day69(Django的视图层,Django的模板层)

    昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...

随机推荐

  1. linux几个命令

    ll |wc -l 统计目录下多少文件 df -h 磁盘统计大小 du -sh 该目录占磁盘总大小 du -sh * 该目录下每个目录占用磁盘大小

  2. 我是怎样使用javassist将代码注入到帝国OL并进行调试的

    帝国OL是拉阔一款手机网络游戏(腾讯也有代理),我在中学时代玩儿过. 帝国OL还维护着KJava版本游戏客户端,这意味着我们可以在PC端使用模拟器玩儿游戏. 不过这篇文章我主要是关注如何通过代码注入拦 ...

  3. Linux系统中的文件权限

    r(read)         4    可读 w(write)   2     可写 x()           1     可执行 644            755 rw-r-r        ...

  4. spark 选择不同yarn集群提交任务

    修改环境变量中的HADOOP_CONF_DIR,可以配置多份配置文件.根据不同路径下yarn集群配置访问不同集群. 所使用的用户需要在yarn每个节点都存在且有对应的访问权限.

  5. 标准库random

    pseudo-random number generators for various distributions. Almost all module functions depend on the ...

  6. 主席树||可持久化线段树||离散化||[CQOI2015]任务查询系统||BZOJ 3932||Luogu P3168

    题目: [CQOI2015]任务查询系统 题解: 是一道很经典的题目.大体思路是抓优先级来当下标做主席树,用时刻作为主席树的版本.然而优先级范围到1e7去了,就离散化一遍.然后把每个事件的开始(s). ...

  7. [No000015A]SQL语句分类

    1.Data Definition Language(DDL) 数据定义 CREATE - 在数据库中创建对象: ALTER - 修改数据库结构: DROP - 删除对象: RENAME - 重命名对 ...

  8. Mybatis 不同使用方式

    前言 工作这么多年,ORM框架一直选择Mybatis框架. Mybatis的使用方式也一直在变,总体来说是越来越简单.写篇文章对各使用方式做个总结... 正文 一.Mybatis典型用法 1. 正常执 ...

  9. hadoop 学习笔记

    参考资料:<Hadoop 权威指南> 1 map处理完后,hadoop框架会将结果安装键进行排序,然后将排好的结果传给reduce 2 需要低延迟的应用不适合HDFS,对于低延迟应用HBa ...

  10. 图->存储结构->邻接多重表

    文字描述 邻接多重表是无向图的另一种链式存储结构. 虽然邻接表是无向图的一种很有效的存储结构,在邻接表中容易求得顶点和边的各种信息. 但是,在邻接表中每一条边(vi,vj)有两个结点,分别在第i个和第 ...