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

1、返回简单类型:html

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

2、返回文件类型:django

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

3、返回模板类型:json

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

4、文件下载:cookie

 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 #二、复杂的大型流文件下载:
 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

5、HttpResponse的更多用法:session

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"'

6、HttpResponse的一些方法:app

 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)¶

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

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)

7、重定向:编码

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=[]))

8、错误页加密

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
相关文章
相关标签/搜索