Django学习笔记第三篇--关于响应返回
一、返回简单类型:
#1、返回简单字符串
#from django.http import HttpResponse
return HttpResponse("return string")
#2、返回json
return HttpResponse(json.dumps(response_data),content_type="application/json")
二、返回文件类型:
#1、返回一个页面
#from django.shortcuts import render
return render(request,"return.html")
三、返回模板类型:
#1、返回模板类型
return render(request,"return.html",{"string":"test ok"})
四、文件下载:
#1、简单流文件下载
return HttpRequest(fd.read())
#相关字节控制:
response = HttpResponse(data, content_type='application/zip')
from urllib import parse
response['Content-Disposition'] = 'attachment;filename=' +parse.quote(z_name)
return response
#2、复杂的大型流文件下载:
def file_download(request):
def file_iterator(file_name, chunk_size=512):
with open(file_name) as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
the_file_name = "file_name.txt"
response = StreamingHttpResponse(file_iterator(the_file_name))
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename="{0}"'.format(the_file_name)
return response
五、HttpResponse的更多用法:
#
HttpResponse(xxx,content_type="xxx")
#
response = HttpResponse()
response["age"] = 120 #响应数据部分
#
"""以文件形式处理响应数据部分"""
response = HttpResponse(my_data,content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="foo.xls"'
六、HttpResponse的一些方法:
HttpResponse.__init__(content='', content_type=None, status=200, reason=None, charset=None)
#使用页面的内容(content)和content-type来实例化一个HttpResponse对象。
#content 应该是一个迭代器或者字符串。如果它是一个迭代器,那么他应该返回的是一串字符串,并且这些字符串连接起来形成response的内容(content)。如果不是迭代器或者字符串,那么在其被接收的时候将转换成字符串。
#content_type是可选地通过字符集编码完成的MIME类型,并且用于填充HTTP Content-Type头部。如果没有设定, 会从 DEFAULT_CONTENT_TYPE 和 DEFAULT_CHARSET 设定中提取, 作为默认值: “text/html; charset = utf-8“。
#status 是 HTTP 响应状态码 。.
#reason 是HTTP响应短语 如果没有指定, 则使用默认响应短语.
#charset 在response中被编码的字符集。如果没有给定,将会从 content_type中提取, 如果提取不成功, 那么 DEFAULT_CHARSET 的设定将被使用.
#HttpResponse.__setitem__(header, value)
#由给定的首部名称和值设定相应的报文首部。 header 和 value 都应该是字符串类型。
#HttpResponse.__delitem__(header)
#根据给定的首部名称来删除报文中的首部。如果对应的首部不存在将沉默地(不引发异常)失败。不区分大小写。
#HttpResponse.__getitem__(header)
#根据首部名称返回其值。不区分大小写。
#HttpResponse.has_header(header)
#通过检查首部中是否有给定的首部名称(不区分大小写),来返回True 或 False 。
#HttpResponse.setdefault(header, value)
HttpResponse.write(content)
#此方法使HttpResponse实例是一#个类似文件的对象。
HttpResponse.flush()
#此方法使HttpResponse实例是一个类似文件的对象。
HttpResponse.tell()
此方法使HttpResponse实例是一个类似文件的对象。
#HttpResponse.getvalue()
#HttpResponse.writable()
#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)
七、重定向:
#
from django.http import HttpResponseRedirect
return HttpResponseRedirect("redirecturl")
#
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
return redirect(reverse('test.views.invoice_return_index', args=[]))
八、错误页
#views.py
from django.shortcuts import render,render_to_response
def page_not_found(request):
return render_to_response('404.html')
#settings.py
要加上下面哦
handler404 = app1.views.page_not_found #改动2
Django学习笔记第三篇--关于响应返回的更多相关文章
- Django学习笔记(三)—— 型号 model
疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...
- Django学习笔记(进阶篇)
Django学习笔记(进阶篇):http://www.cnblogs.com/wupeiqi/articles/5246483.html
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- Django 学习笔记(三)模板导入
本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ...
- Django学习笔记(三)视图
构建网页内容 视图函数的return具有多种响应类型: 上述函数主要来自django.http,该模块是实现响应功能的核心. 实际开发中可用此模块实现文件下载功能,在index的urls.py和vie ...
- Django学习笔记第七篇--实战练习三--关于更有层级的url请求、404错误以及其他响应函数
一.关于更有层级的URL: 可以实现每一个APP一个子URL目录,例如app1的所有操作都在http://www.localhost1.com:5443/app1/xxxx 在工程主文件夹下的工程同名 ...
- Django学习笔记第五篇--实战练习一--查询数据库并操作cookie
一.启动项目: django-admin start mysite1 cd mysite1 python manage.py startapp loginapp 根据上文敲命令就可以创建好了一个项目结 ...
- python之Django学习笔记(三)---URL调度/URL路由
在django中,用户发起url请求消息首先到工程的urls.py中查找是否有匹配的url路径 刚创建好的工程中urls.py只有下面几行代码: from django.contrib import ...
- Django 学习笔记(三) --- HTML 模版加载 css、js、img 静态文件
人生苦短 ~ Tips:仅适用于 Python 3+(反正差别不大,py2 改改也能用).因为据 Python 之父 Guido van Rossum 说会在 2020 年停止对 Python 2 的 ...
随机推荐
- 峰值因子,峰均比,Reference Level
峰值因子(CREST Factor,CF)与 峰均比( Peak-to-Average Ratio,PAR) 对于一个波形信号,在一段时间内信号幅度峰值比上信号幅度的有效值即为信号的峰值因子,它表征了 ...
- Mysql 字符串函数 详解
字符串函数是最常用的一种函数了,如果大家编写过程序的话,不妨回过头去看看自己使用过的函数,可能会惊讶地发现字符串处理的相关函数占已使用过的函数很大一部分.MySQL中字符串函数也是最丰富的一类函数,表 ...
- Mysql User表权限字段说明全介绍
一:mysql权限表user字段详解: Select_priv.确定用户是否可以通过SELECT命令选择数据. Insert_priv.确定用户是否可以通过INSERT命令插入数据. Update_p ...
- Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道
Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...
- Nginx 1.5.2 + PHP 5.5.1 + MySQL 5.6.10 在 CentOS 下的编译安装
最近配置了几台Web服务器,将安装笔记贴出来吧.没时间像以前那样,将文章写的那样系统了,请见谅.详细配置,可以看以前的旧文章: http://blog.zyan.cc/nginx_php_v6 .安装 ...
- 出现“unrecognized selector sent to instance”问题原因之一及解决方法。
对于iPhone开发初学者来说,很想实现自己在iPhone上的第一个小程序,准备工作就绪侯就信心满满的开始了!一般来说大家可能都是从Hello World做起吧. 反正我是的,:),如果按照文 ...
- win32之全屏窗口
游戏开发中经常使用会让游戏以全屏窗口的状态运行,下面一个例子就是来实现这个效果的. #include <windows.h> void RegisterMyClass(); LRESULT ...
- Spring Mvc中DispatcherServlet和Servlet的区别小结
在web开发过程中开始接触的是servlet,用来处理用户请求.这几年随着spring 框架越来越成熟,几乎成了java web开发界的主流框架.既然这么受欢迎肯定有它的优点,spring框架在原来的 ...
- maven远程私服发布jar包
配置项目POM.xml <distributionManagement> <repository> <id>nexus-releases</id> &l ...
- js 去掉数组中重复的对象
function deteleObject(obj) { // console.log(obj) var uniques = []; var stringify = {}; ; i < obj. ...