Django学习笔记第三篇--关于响应返回

一、返回简单类型:

1 #1、返回简单字符串
2 #from django.http import HttpResponse
3 return HttpResponse("return string")
4 #2、返回json
5 return HttpResponse(json.dumps(response_data),content_type="application/json")  

二、返回文件类型:

1 #1、返回一个页面
2 #from django.shortcuts import render
3 return render(request,"return.html")

三、返回模板类型:

1 #1、返回模板类型
2 return render(request,"return.html",{"string":"test ok"})

四、文件下载:

 1 #1、简单流文件下载
 2 return HttpRequest(fd.read())
 3 #相关字节控制:
 4 response = HttpResponse(data, content_type='application/zip')
 5 from urllib import parse
 6 response['Content-Disposition'] = 'attachment;filename=' +parse.quote(z_name)
 7 return response
 8 #2、复杂的大型流文件下载:
 9 def file_download(request):
10     def file_iterator(file_name, chunk_size=512):
11         with open(file_name) as f:
12             while True:
13                 c = f.read(chunk_size)
14                 if c:
15                     yield c
16                 else:
17                     break
18     the_file_name = "file_name.txt"
19     response = StreamingHttpResponse(file_iterator(the_file_name))
20     response['Content-Type'] = 'application/octet-stream'
21     response['Content-Disposition'] = 'attachment;filename="{0}"'.format(the_file_name)
22     return response

五、HttpResponse的更多用法:

1 #1
2 HttpResponse(xxx,content_type="xxx")
3 #2
4 response = HttpResponse()
5 response["age"] = 120 #响应数据部分
6 #3
7 """以文件形式处理响应数据部分"""
8 response = HttpResponse(my_data,content_type='application/vnd.ms-excel')
9 response['Content-Disposition'] = 'attachment; filename="foo.xls"'

六、HttpResponse的一些方法:

 1 HttpResponse.__init__(content='', content_type=None, status=200, reason=None, charset=None)
 2 #使用页面的内容(content)和content-type来实例化一个HttpResponse对象。
 3 #content 应该是一个迭代器或者字符串。如果它是一个迭代器,那么他应该返回的是一串字符串,并且这些字符串连接起来形成response的内容(content)。如果不是迭代器或者字符串,那么在其被接收的时候将转换成字符串。
 4 #content_type是可选地通过字符集编码完成的MIME类型,并且用于填充HTTP Content-Type头部。如果没有设定, 会从 DEFAULT_CONTENT_TYPE 和 DEFAULT_CHARSET 设定中提取, 作为默认值: “text/html; charset = utf-8“。
 5 #status 是 HTTP 响应状态码 。.
 6 #reason 是HTTP响应短语 如果没有指定, 则使用默认响应短语.
 7 #charset 在response中被编码的字符集。如果没有给定,将会从 content_type中提取, 如果提取不成功, 那么 DEFAULT_CHARSET 的设定将被使用.
 8 #HttpResponse.__setitem__(header, value)
 9 #由给定的首部名称和值设定相应的报文首部。 header 和 value 都应该是字符串类型。
10 #HttpResponse.__delitem__(header)
11 #根据给定的首部名称来删除报文中的首部。如果对应的首部不存在将沉默地(不引发异常)失败。不区分大小写。
12 #HttpResponse.__getitem__(header)
13 #根据首部名称返回其值。不区分大小写。
14 #HttpResponse.has_header(header)
15 #通过检查首部中是否有给定的首部名称(不区分大小写),来返回True 或 False 。
16 #HttpResponse.setdefault(header, value)
17 HttpResponse.write(content)
18 #此方法使HttpResponse实例是一#个类似文件的对象。
19 HttpResponse.flush()
20 #此方法使HttpResponse实例是一个类似文件的对象。
21 HttpResponse.tell()
22 此方法使HttpResponse实例是一个类似文件的对象。
23 #HttpResponse.getvalue()
24 #HttpResponse.writable()
25 #HttpResponse.writelines(lines)¶

六、响应中对session和cookie的控制:

HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)#设置cookie

HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)
#与set_cookie() 类似,但是在设置之前将用密钥签名。通常与
HttpRequest.get_signed_cookie() 
#一起使用。你可以使用可选的salt 参考来增加密钥强度,但需要记住将它传递给对应的HttpRequest.get_signed_cookie() 调用。

HttpResponse.delete_cookie(key, path='/', domain=None)

七、重定向:

1 #1
2 from django.http import HttpResponseRedirect
3 return HttpResponseRedirect("redirecturl")
4 #2
5 from django.core.urlresolvers import reverse  
6 from django.shortcuts import redirect  
7 return redirect(reverse('test.views.invoice_return_index', args=[]))

八、错误页

1 #views.py
2 from django.shortcuts import render,render_to_response  
3 def page_not_found(request):
4     return render_to_response('404.html')
5 #settings.py
6 要加上下面哦
7 handler404 = app1.views.page_not_found #改动2

 

转载于:https://www.cnblogs.com/KevinGeorge/p/8332238.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP响应状态码

1XX:代表提示信息 2XX:代表成功信息 3XX:代表重定向 4XX:代表客户端错误信息 5XX:代表服务器错误 信息 500:500 错误是服务器内部错误 ,而且是程序上错误 为多,可能是你的用户权限的问题导致,或者是数据库连接出现了错误. 501:服务器501服务器501错误是服务器是否具有请求功能.…

pycharm中无法import已经安装的ros中的库

使用pycharm写python程序,无法import 已经安装的ros包,并提示ImportError: No module named sensor_msgs.msg 解决方法如下 1. pycharm->file->settings->project:csvfile->project interpreter-> 点击右侧下三角选择 show all 2. 在弹…

tcp/ip知识点的总结

知识点搜集于网络,在加上自己的总结,还有很多不全,希望大家多提意见,共享学习! 一、TCP/IP是什么? TCP/IP是一个协议族,而不是单独的协议。包括arp、ip、icmp、tcp、udp、http、ftp等协议 二、T…

搜索引擎ElasticSearchV5.4.2系列一之ES介绍

相关博文: 搜索引擎ElasticSearchV5.4.2系列一之ES介绍 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2kibanaV5.4.2x-packV5.4.2安装 搜索引擎ElasticSearchV5.4.2系列三之ES使用 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎…

[译] 前端组件设计原则

原文地址:Front end component design principles 原文作者:Andrew Dinihan 文中示例代码:传送门 限于个人能力,如有错漏之处,烦请不吝赐教。 前言 我在最近的工作中开始使用 Vue 进行开发,但是我在上一家公…

imu_utils标定imu问题解决

在编译过程中遇到的一些问题可以参照这个女生的文章 https://blog.csdn.net/fang794735225/article/details/92804030 下面是imu_utils的主页,可以下载代码,也有使用步骤 https://github.com/gaowenliang/imu_utils 我下载了imu_utils主页最后面提供…

术语-服务:PaaS

ylbtech-术语-服务:PaaSPaaS是Platform-as-a-Service的缩写,意思是平台即服务。 把服务器平台作为一种服务提供的商业模式。通过网络进行程序提供的服务称之为SaaS(Software as a Service),而云计算时代相应的服务器平台或者开发环境作为服务…

PostgreSQL安装和简单配置

PostgreSQL安装与使用 目录 依赖包的安装源码编译和安装初始化数据库集簇简单配置依赖包安装 PostgreSQL源码安装依赖以下四个软件包 readline zlib flex bison 在Ubuntu中可是应用以下命令直接进行安装: sudo apt-get install libreadline6 libreadline6-dev zlib1…

1.App瘦身经验总结

为什么apk越来越大? 1.项目不断发展,功能越多,代码量增加的同时,资源文件也在不断的增多2.app支持的主流dpi越来越多,如ldpi、mdpi、hdpi、xh xxh xxxh等等,间接导致资源增多3.引入的第三方sdk或开源库越来…

研究相机和IMU坐标系变换

刚开始录制的数据时没有考虑相机和IMU之间的坐标变换,但是后来发现跟踪效果不好,去查验imu数据时,发现,我采集保存的imu数据格式没有和euroc数据集中的imu数据保存格式统一,所以需要研究的是在euroc用于数据采集的设备…

第五天:Swift拖动 item 重排 CollectionView

参考链接:https://www.jianshu.com/p/96f956f1479e 1 import UIKit2 3 enum VC: String {4 case ViewController5 case CollectionViewController6 7 func segueIdentifier() -> String {8 switch self {9 case .ViewController:10 …

MIT Kimera阅读笔记

这两天在调研SLAM的最新算法,找到了2019CVPR上的一篇文章,出自于MIT,因为要给其他同事讲解,所以就把文章的重点内容在我个人理解的情况下翻译了出来,有理解不到位的还请各位大佬多多批评指正。 最后附上了Delaunay Tri…

C#中的ForEach

public void ForEach(Action<T> action) 针对List<T>集合中的每个元素执行操作Action<T> action,Action<T>是只接受一个类型为T的传入参数返回值为void的委托,对于泛型List<T>来说,Action<T>中的类型与List<T>中的类型是相同的.acti…

哈希映射

哈希来源问题&#xff1a;关于统计一个字符串集合中&#xff0c;求出现次数最多的字符串思路&#xff1a;建立一个哈希映射&#xff08;HashMap&#xff09;&#xff0c;其键为"字符串"&#xff0c;值为"字符串出现次数"&#xff0c;然后遍历字符串集合&am…

1月28日云栖精选夜读 | 终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码

如同我们去年12月在 Flink Forward China 峰会所约&#xff0c;阿里巴巴内部 Flink 版本 Blink 将于 2019 年 1 月底正式开源。今天&#xff0c;我们终于等到了这一刻。 热点热议 终于等到你&#xff01;阿里正式向 Apache Flink 贡献 Blink 源码 作者&#xff1a;技术小能手 发…

ZOJ-3537

题目大意&#xff1a;给你一个n (n<300) 边形&#xff0c;给出它所有的顶点坐标&#xff0c;让你把它划分成n-2个三角形的花费最小值&#xff0c;顶点 a 和 b 相连的花费为 abs(a.xb.x)*abs(a.yb.y)。 如果是凹多边形输出无解。 思路&#xff1a;先跑个凸包判断是不是凸多边…

你会等待还是离开(大理)---写的一个推文

你会等待还是离开 -----出发和遇见大理 上关花闹 下关风薰 苍山雪寂 洱海月迟 但闻肆季弦雀起 才吹小雨又需晴 现实很调皮&#xff0c;很容易就让人没有力气&#xff0c;就像变与不变&#xff0c;并不复杂&#xff0c;也不遥远&#xff0c;一个寒假的距离&#xff0c;一句话的力…

sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com

安装上ros无法进行rosdep init.解决方法如下&#xff1a;https://zhuanlan.zhihu.com/p/77483614 因此&#xff0c;在/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py中顶部直接插入两行代码取消SSL验证 import ssl ssl._create_default_https_context ssl._crea…

YodaOS: 一个属于 Node.js 社区的操作系统

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> 大家好&#xff0c;很开心在这里宣布 YodaOS开源了。他将承载 Rokid 4年以来对于人工智能和语音交互领域的沉淀&#xff0c;并选择 Node.js 作为操作系统的一等开发公民&#xff0…

Android顶部粘至视图具体解释

不知从某某时间開始&#xff0c;这样的效果開始在UI设计中流行起来了。让我们先来看看效果&#xff1a;大家在支付宝、美团等非常多App中都有使用。要实现这个效果&#xff0c;我们能够来分析下思路&#xff1a;我们肯定要用2个一样的布局来显示我们的粘至布局。一个是正常的、…