一、返回简单类型:

 #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

最新文章

  1. C#测试题
  2. nodeType、nodeName和nodeValue
  3. GETOBJECTOPTIONS
  4. 【BZOJ-4289】Tax 最短路 + 技巧建图
  5. 分页探究--Filter+JSTL
  6. 数据库Error:The ScriptCollection in ScriptName not find
  7. 尝试在tensorflow上运行facenet
  8. extjs ajax请求与struts2进行交互
  9. P2680 运输计划
  10. [hackerrank]John and GCD list
  11. 全文检索- Oracle/MySql/达梦
  12. 어느 도시 보유 하 면 사랑 이다(事態が発生すれば、ある都市の恋はしません)【Si les villes un amour】{If have love in a city}
  13. NPOI导出多张图片到Excel
  14. mysql批量插入之提高插入效率
  15. tf.nn.conv2d 和 tf.nn.max_pool 中 padding 分别为 'VALID' 和 'SAME' 的直觉上的经验和测试代码
  16. 2019.04.26 mongaodb
  17. codevs3002 石子归并 3
  18. win10 python27pyhton36共存
  19. ratio_to_report 分析函数求占比
  20. [NM]打开NetworkManager和wpa_supplicant的DEBUG接口

热门文章

  1. 摘:C#压缩文件
  2. C#:Application操作(待补充)
  3. windows 2003 群集
  4. jenkins 下载插件失败处理办法
  5. spring in action 9.1 spring security
  6. java运算符优先级和结合性
  7. AESDK关于AEFX_CLR_STRUCT的用处
  8. Atitit.spring体系结构大总结
  9. JMeter学习笔记(四)
  10. C++中常函数内部的this指针也是const类型的