##################   什么是视图?     #######################

视图:

1,一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
2,响应可以是一张网页的HTML内容(使用render),一个重定向(使用redirect),一个404错误,一个XML文档,或者一张图片。
3,无论视图本身包含什么逻辑,必须要返回响应,否则程序会报错。
为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。

##################   视图----CBV和FBV  #######################

CBV和FBV
CBV就是class base view FBV就是function base view,
之前都是写的基于函数的视图,现在要写一个基于类的视图, 写对应关系的时候有变化:
# url(r'^add_publisher/', views.add_publisher),#这是FBV
url(r'^add_publisher/', views.AddPublisher.as_view()),##这是CBV

###########################################################

# CBV版添加班级
from django.views import View
class AddClass(View): def get(self, request):
return render(request, "add_class.html") def post(self, request):
class_name = request.POST.get("class_name")
models.Classes.objects.create(name=class_name)
return redirect("/class_list/")

##################   视图--Request对象     #######################

Request对象

request.path_info  这是获取用户请求的路径,路径后面的参数是不会取到的,
request.method 获取请求的方法,get,post
request.GET 返回一个字典对象,通常是用来获取url里面的参数,
request.POST 返回一个字典对象,通常是一个表单提交的数据,
reuqest.body byte类型.这是获取请求的body,get请求的body是空的,post请求的body是填写的内容,这个不常用,

##################   视图     #######################

上传文件的HTML代码:

<form action="/upload/" method="post" enctype="multipart/form-data">
{#enctype="multipart/form-data" 这一句一定要写,否则会导致上传文件拿不到的,#}
{#文件和不同的字符串是不一样的,如果文件比较大,会一点一点的传#}
<input type="file" name="upload_file">
<input type="submit" value="开始上传">
</form>

对应的视图函数:

# 处理上传的文件,
def upload(request):
"""
保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。
但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。
:param request:
:return:
"""
if request.method == "POST":
# 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
filename = request.FILES["upload_file"].name # 这是拿到了文件名,
# 在项目目录下新建一个文件
with open(filename, "wb") as f: # wb以二进制的方式,
# 从上传的文件对象中一点一点读
for chunk in request.FILES["upload_file"].chunks(): # chunks():这是一个固定的写法,一点点的传值,
# FILES["upload_file"] 这个列表中的是在html定义的file的name,所以可以写多个,
# 写入本地文件
f.write(chunk)
return HttpResponse("上传OK")
else:
return render(request, 'file_upload.html')

##################   视图--response对象     #######################

response对象
基础必备三件套,
1,httpresponse,这是返回一个字符串
2,render,这是返回一个页面
3,redirect,这是返回一个重定向,告诉浏览器再去访问另外的网址,

##################   视图---jsonresponse对象     #######################

jsonresponse对象,
真实的web开发,不是既写前端,又写后端的,你只需要写后端,后端给前端返回的数据都是什么格式的呢???
返回的都是json字符串,这是一种通用的数据格式,前端js拿到之后把数据渲染到页面上,

代码:

def json_test(request):
data = {'name': 'xiaohei', 'age': ''}
data2 = [1, 2, 3, 4]
################################################################
# import json
# json_data=json.dumps(data) #这是转换成一个json字符串,
# return HttpResponse(json_data)
# 这是你写api的时候一个非常常用的需求,就是把数据封装成一个json传给前端,然后让前端去处理,
##################################################################
# 还有一个简单的方法,django内置了一个jsonresponse,
from django.http import JsonResponse
return JsonResponse(data)
return JsonResponse(data2, safe=False)
# 如果传的列表会有问题,但是加上safe=False,可以传到前端,但是一般不会传列表过去,

##################   视图     #######################

常用视图响应的方式是什么?

response对象
基础必备三件套,
1,httpresponse,这是返回一个字符串
2,render,这是返回一个页面
3,redirect,这是返回一个重定向,告诉浏览器再去访问另外的网址, 4,返回json数据,可以使用JsonResponse来构造响应对象 帮助我们将数据转换为json字符串
设置响应头Content-Type为 application/json
例子:from django.http import JsonResponse
def demo_view(request):
return JsonResponse({‘city’: ‘beijing’, ‘subject’: ‘python’})

###################################################

###################################################

###################################################

django框架基础-视图系统-长期维护的更多相关文章

  1. django框架基础-路由系统-长期维护

    ##################   路由系统介绍    ####################### 路由系统就是路径和函数的对应关系, 路由系统可以看成支撑你这个网站的目录,就像是一本书一样 ...

  2. django框架基础-ORM进阶-长期维护

    ###############    ORM进阶---contenttype    ################ 设计思路: """ 路飞有两种课,专题课和学位课, ...

  3. Django框架简介-视图系统

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

  4. django框架进阶-使用缓存-长期维护

    ###############   django-缓存页面    ############### ########################################### # 全站缓存, ...

  5. django框架进阶-form组件-长期维护

    ##################     form组件做了什么事情?      ####################### 之前web开发的模式,以注册为例 1,要有一个注册页面,然后有一个f ...

  6. django框架进阶-ModelForm组件-长期维护

    ############################################################ """ 通常在Django项目中,我们编写的大部 ...

  7. 将Python的Django框架与认证系统整合的方法

    将Python的Django框架与认证系统整合的方法 这篇文章主要介绍了将Python的Django框架与认证系统整合的方法,包括指定认证后台和编写认证后台等内容,需要的朋友可以参考下 将Django ...

  8. Django框架03 /视图相关

    Django框架03 /视图相关 目录 Django框架03 /视图相关 1. 请求相关 2.响应相关 3.FBV和CBV 视图(视图函数和视图类) 3.1 类视图 CBV 3.2 视图函数 FBV ...

  9. Django框架——基础之视图系统(View.py)

    Django框架之View.py(视图文件) 1. 视图简介 视图层是Django处理请求的核心代码层,我们大多数Python代码都集中在这一层面. 它对外接收用户请求,对内调度模型层和模版层,统合数 ...

随机推荐

  1. 【mui webAPP】HBuilder创建的iOS平台设置沉浸式状态栏

    应用占用全屏区域,而系统状态栏需要预留出系统状态栏高度. HBuilder创建的应用默认不使用沉浸式状态栏样式,需要进行如下配置开启:打开应用的manifest.json文件,切换到代码视图,在plu ...

  2. reference-based measure|Distribution-based measure|密码子使用偏向性

    生命组学 密码子使用偏向性是指同义密码子使用频率不同. 影响因素:1.GC2.横向基因转移3.selection 转录偏好于多的tRNA. 同种氨基酸但有密码子使用偏向. ============== ...

  3. Vue中Js动画 与Velocity.js 多组件多元素 列表过渡

    Vue提供我们很多js动画钩子 写在tansition标签内部 入场动画 @before-enter="" 处理函数收到一个参数(e l) el为这个元素 @enter=" ...

  4. Python—程序设计:抽象工厂模式

    抽象工厂模式 内容:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象. 例:生产一部手机,需要手机壳.CPU.操作系统三类对象进行组装,其中每类对象都有不同的种类.对每个具体工厂,分别生 ...

  5. c语言:自增自减运算符的操作详解

    博主在回忆c语言的基本知识时,突然发现自增自减运算符(--.++)这个知识点有些模糊不清,故博主为了给同为小白的同学们提供一些经验,特写下这篇文章. 首先,自增自减运算符共有两种操作方式. 比如,我先 ...

  6. 洛谷 P1731 [NOI1999]生日蛋糕 && POJ 1190 生日蛋糕

    题目传送门(洛谷)  OR 题目传送门(POJ) 解题思路: 一道搜索题,暴力思路比较容易想出来,但是这道题不剪枝肯定会TLE.所以这道题难点在于如何剪枝. 1.如果当前状态答案已经比我们以前某个状态 ...

  7. Linux-异步IO

    1.何为异步IO (1).几乎可以这么认为:异步IO就是操作系统用软件实现的一套中断响应系统. (2).异步IO的工作方法:我们当前进程注册一个异步IO事件(使用signal注册一个信号SIGIO的处 ...

  8. modbus 指令16 $10 的格式

    { //写多个请求 01(从设备)10(功能码) 00 77(起始地址) 00 01(寄存器数) 02(字节数) 05 55(写的数据) 6F B8(CRC) //写多个返回 01(从设备) 10(功 ...

  9. SDWebImage缓存图片和读取图片

    NSString *urlStr: NSUrl *url = [NSURL URLWithString:urlStr]; //缓存图片 SDWebImageManager *manager = [SD ...

  10. 洛谷P1525 关押罪犯(并查集、二分图判定)

    本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...