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