Django 中的 Response对象

转载 2018年04月17日 17:22:06

转载自:hcw_19(博客园)

HttpResponse对象

  • 在django.http模块中定义了HttpResponse对象的API
  • HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建
  • 不调用模板,直接返回数据
#coding=utf-8
from django.http import HttpResponse

def index(request):
    return HttpResponse('你好')
  • 调用模板
from django.http import HttpResponse
from django.template import RequestContext, loader

def index(request):
    t1 = loader.get_template('polls/index.html')
    context = RequestContext(request, {'h1': 'hello'})
    return HttpResponse(t1.render(context))

属性

  • content:表示返回的内容,字符串类型
  • charset:表示response采用的编码字符集,字符串类型
  • status_code:响应的HTTP响应状态码
  • content-type:指定输出的MIME类型

方法

  • init :使用页内容实例化HttpResponse对象
  • write(content):以文件的方式写
  • flush():以文件的方式输出缓存区
  • set_cookie(key, value=”, max_age=None, expires=None):设置Cookie
    • key、value都是字符串类型
    • max_age是一个整数,表示在指定秒数后过期
    • expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期,注意 - datetime和timedelta值只有在使用PickleSerializer时才可序列化
    • max_age与expires二选一
    • 如果不指定过期时间,则两个星期后过期
from django.http import HttpResponse
from datetime import *

def index(request):
    response = HttpResponse()
    if request.COOKIES.has_key('h1'):
        response.write('<h1>' + request.COOKIES['h1'] + '</h1>')
    response.set_cookie('h1', '你好', 120)
    # response.set_cookie('h1', '你好', None, datetime(2016, 10, 31))
    return response
  • delete_cookie(key):删除指定的key的Cookie,如果key不存在则什么也不发生

子类HttpResponseRedirect

  • 重定向,服务器端跳转
  • 构造函数的第一个参数用来指定重定向的地址
    在views1.py中
from django.http import HttpResponse,HttpResponseRedirect
def index(request):
    return HttpResponseRedirect('js/')
def index2(request,id):
    return HttpResponse(id)

在应用的urls.py中增加一个url对象
url(r’^([0-9]+)/$’, views1.index2, name=’index2’),
- 推荐使用反向解析

from django.core.urlresolvers import reverse

def index(request):
    return HttpResponseRedirect(reverse('booktest:index2', args=(1,)))

子类JsonResponse
- 返回json数据,一般用于异步请求
- init (data)
- 帮助用户创建JSON编码的响应
- 参数data是字典对象
- JsonResponse的默认Content-Type为application/json

from django.http import JsonResponse

def index2(requeset):
    return JsonResponse({'list': 'abc'})

简写函数

render

  • render(request, template_name[, context])
  • 结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的HttpResponse对象
  • request:该request用于生成response
  • template_name:要使用的模板的完整名称
  • context:添加到模板上下文的一个字典,视图将在渲染模板之前调用它
from django.shortcuts import render

def index(request):
    return render(request, 'booktest/index.html', {'h1': 'hello'})

重定向

  • redirect(to)
  • 为传递进来的参数返回HttpResponseRedirect
  • to推荐使用反向解析
from django.shortcuts import redirect
from django.core.urlresolvers import reverse

def index(request):
    return redirect(reverse('booktest:index2'))

得到对象或返回404

  • get_object_or_404(klass, args, *kwargs)
  • 通过模型管理器或查询集调用get()方法,如果没找到对象,不引发模型的DoesNotExist异常,而是引发Http404异常
  • klass:获取对象的模型类、Manager对象或QuerySet对象
  • **kwargs:查询的参数,格式应该可以被get()和filter()接受
  • 如果找到多个对象将引发MultipleObjectsReturned异常
from django.shortcuts import *

def detail(request, id):
    try:
        book = get_object_or_404(BookInfo, pk=id)
    except BookInfo.MultipleObjectsReturned:
        book = None
    return render(request, 'booktest/detail.html', {'book': book})

将settings.py中的DEBUG改为False
将请求地址输入2和100查看效果

得到列表或返回404

  • get_list_or_404(klass, args, *kwargs)
  • klass:获取列表的一个Model、Manager或QuerySet实例
  • **kwargs:查寻的参数,格式应该可以被get()和filter()接受
from django.shortcuts import *

def index(request):
    # list = get_list_or_404(BookInfo, pk__lt=1)
    list = get_list_or_404(BookInfo, pk__lt=6)
    return render(request, 'booktest/index.html', {'list': list})

将settings.py中的DEBUG改为False

Django-restframework10 Response对象

1. 简介 和基本的HttpResponse objects不同,TemplateResponse objects会保存视图函数计算出来的响应上下文,最终输出的响应对象在需要时才会被计算 REST框架...
  • runnoob_1115
  • runnoob_1115
  • 2017-11-09 10:42:50
  • 84

Django-HttpResponse返回models对象

描述通过django框架的models,需要转换为字符串,记录一下如何快速的转换解决方法...
  • cloudmq
  • cloudmq
  • 2017-03-24 14:59:12
  • 755

Django中Request和Response系列之十

Django中HttpRequest和HttpResponse知识总结定义:
  • u014745194
  • u014745194
  • 2017-06-28 17:13:43
  • 554

Django1.7b版本中HttpResponse中 移除了参数mimetype=’application/json’ 这样的写法

django1.7之前,这样用: HttpResponse(simplejson.dumps({“status”: ‘200’, “message”:u’登录成功’}), mimetype=’a...
  • sunmantan007
  • sunmantan007
  • 2014-09-28 11:04:37
  • 530

Django的HttpRequest和HttpResponse对象

请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法。...
  • liu_yanna
  • liu_yanna
  • 2015-12-04 14:40:12
  • 16384

Django request和reponse对象

附录H HTTP请求(Request)和回应(Response)对象 78 地址:http://djangobook.py3k.cn/appendixH/ ...
  • tingyuanss
  • tingyuanss
  • 2015-05-07 11:34:38
  • 1403

Django中render和render_to_response的区别

导入from django.shortcuts import render, render_to_response作用两者均是用来展示模板页面的。参数区别最明显的一个,render的第一个参数是req...
  • baidu_35085676
  • baidu_35085676
  • 2017-08-04 10:22:49
  • 2415

Django 导出excel

这里介绍两种方式导出成excel: A方式:会用到xlwt库,请下载安装。 views.py def output(request): response = HttpRespon...
  • u010808961
  • u010808961
  • 2013-08-11 18:15:46
  • 1183

ASP.NET之Request和Response对象

经过了牛腩新闻发布系统和html的学习对B/S开发的流程有了些理解。前面虽然用到了很多知识,但对制作网页只能说知其然,当学到asp.net视频中的讲解才可以说开始知其所以然了。       今天来说说...
  • u010858791
  • u010858791
  • 2014-10-22 16:39:54
  • 1631

Django-rest-framework学习(二)Request与Response

Django-rest-framework学习(二)Request与Response标签(空格分隔): Django web-api pythonDjango-rest-framework学习二Req...
  • a101070096
  • a101070096
  • 2016-03-30 23:34:14
  • 1494
收藏助手
不良信息举报
您举报文章:Django 中的 Response对象
举报原因:
原因补充:

(最多只允许输入30个字)