Django中HttpResponse对象的学习

举报
孤寒者 发表于 2021/09/29 17:13:11 2021/09/29
【摘要】 引言——很多时候我们在访问网页的时候,网页的开发者为了美观,大多数都是使用JS效果来显示诸如弹窗之类的效果(提醒登录呀/提醒注册呀/该用户名已经注册呀之类的)那么,使用Django如何实现JS效果呢? HttpResponse对象:Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返...

引言——很多时候我们在访问网页的时候,网页的开发者为了美观,大多数都是使用JS效果来显示诸如弹窗之类的效果(提醒登录呀/提醒注册呀/该用户名已经注册呀之类的)
那么,使用Django如何实现JS效果呢?

HttpResponse对象:

Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpResponseBase或者他的子类的对象。而HttpResponse则是HttpResponseBase用得最多的子类。那么接下来就来介绍一下HttpResponse及其子类。

①HttpResponse对象的属性和方法:

属性:

  • content:表示返回的呢日用,字符串类型;
  • charset:表示response采用的编码字符集,字符串类型;
  • status_code:响应的HTTP响应状态码;
  • content-type:返回的数据的MIME类型,默认为text/html。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果text/plain,那么就会显示一个纯文本。常用的Content-Type如下:
    ①text/html(默认的,html文件)
    ②text/plain(纯文本)
    ③text/css(css文件)
    ④text/javascript(js文件)
    ⑤multipart/form-data(文件提交)
    ⑥application/json(json传输)
    ⑦application/xml(xml文件)
    示例:
response = HttpResponse('<h2>微信公众号【孤寒者】</h1>',content_type='text/plain;charset=utf-8')    # 注意:一般在使用‘text/plain’时,都会添加‘charset=utf-8’,否则是会乱码的。
return response

方法:

  • 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二选一,如果不指定过期时间,则关闭浏览器就失效。
  • delete_cookie(key):删除指定的key的cookie,如果Key不存在则什么也不发生。

②HttpResponse的子类:

返回数据的响应函数有:

  • HttpResponse() 返回简单的字符串对象
  • render() 渲染模板
  • redirect() 重定向
  • JsonResponse() 返回json数据。结合前端AJax等技术可以实现后端向前端传数据,前端接收后实现诸如注册登录等的JS效果功能!(这就解决了引言中说问题!)
from django.http import JsonResponse
def resp(request):
	return JsonResponse({'ss':'登录成功!'})
	# 帮助用户创建JSON编码的响应;
	# 参数data是字典对象;
	# JsonResponse的默认Content-Type为application/json。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。