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. hadoop Codec

  2. Chronic sleep loss cannot be cured that easily

    Chronic sleep loss cannot be cured that easily Sleeping in on Saturday after a few weeks of too litt ...

  3. Zabbix监控MySQL免密码设置

    zabbix自带MySQL监控模板,配置文件在/etc/zabbix/zabbix_agentd.d userparameter_mysql.conf 如果MySQL不使用密码可以直接使用这个监控模板 ...

  4. Oracle数据库版本10.2.0.1升级到10.2.0.3(转)

    Oracle数据库版本10.2.0.1升级到10.2.0.3 1.停止OEM/isqlplus/监听/DB实例 $ emctl stop dbconsole $ isqlplusctl stop $ ...

  5. WIN7/XP用注册表关联指定后缀名和打开程序(手动【图文】和C编程两种实现)

    前言: 本文是基本原理介绍和手动的操作.程序实现该功能在http://blog.csdn.net/arvon2012/article/details/7839556,同时里面有完整代码的下载. 今天在 ...

  6. .NET Core开发日志——Entity Framework与PostgreSQL

    Entity Framework在.NET Core中被命名为Entity Framework Core.虽然一般会用于对SQL Server数据库进行数据操作,但其实它还支持其它数据库,这里就以Po ...

  7. vm tools安装linux ubuntu和主机不能复制

    点击图中的安装vm tools ,因为我的已经安装过了,所以显示的是重新安装. 点击以后会出来一个虚拟光驱,打开虚拟光驱,复制出来 vm toolsxxx.tar.gz  文件建立一个临时文件夹,复制 ...

  8. mapReducer第一个例子WordCount

    mapreducer第一个例子,主要是统计一个目录下各个文件中各个单词出现的次数. mapper package com.mapreduce.wordCount; import java.io.IOE ...

  9. tensorflow的assgin方法

    官网API是这么说的 This operation outputs a Tensor that holds the new value of 'ref' after the value has bee ...

  10. Srt字幕文件解析

    // // ViewController.m // 字幕解析 // // Created by admin on 2018/8/30. // Copyright © 2018年 admin. All ...