[Python]Django请求与响应(二)

简介: [Python]Django请求与响应(二)

4.2 JSON数据

4.2.1 Postman发送JSON数据

JSON字符串必须使用双引号,JSON与字典类似

{
    "username":"zszs",
    "pwd":"123123"
}

4.2.2 服务器获取传递的JSON数据

服务器获取传递的JSON数据,使用request.body.

json模块:

  • json.dumps:将字典转换为JSON字符串
  • json.loads:将JSON字符串转换为字典
from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
import json
# Create your views here.
def login(request):
    # JSON数据在request的body中
    # 获取传递的JSON数据
    body = request.body
    print(body)
    # 传递过来的数据为二进制,对传递的数据进行解码
    body_str = body.decode()
    print(body_str, type(body_str))
    # 解码后的数据为JSON字符串,转换为字典
    body_dic = json.loads(body_str)
    print(body_dic, type(body_dic))
    return HttpResponse('收到')

5. 获取请求头传递的数据

获取通过请求头传递过来的数据,使用request.MATE进行获取请求头headers中的数据,request.META为字典类型。

from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
import json
# Create your views here.
def login(request):
    # 获取请求头
    request_header = request.META
    print(request_header)
    print(type(request_header))
    # 由于请求头是字典类型
    # 获取请求发送过来的文本的文本类
    print(request_header['CONTENT_TYPE'])
    return HttpResponse('收到')

6. 其他常用HttpRequest对象属性

  • method:一个字符串,表示请求使用的HTTP方法,常用值包括:‘GET’、‘POST’。
  • user:请求的用户对象。
  • path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。
  • encoding:一个字符串,表示提交的数据的编码方式。
  • 如果为None则表示使用浏览器的默认设置,一般为utf-8。
  • 这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。
  • FILES:一个类似于字典的对象,包含所有的上传文件。
from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
import json
# Create your views here.
def login(request):
    # 获取浏览器发送请求的请求类型
    print(request.method)
    # 获取所有的上传文件
    print(request.FILES)
    return HttpResponse('收到')

7. HttpResponse对象

视图在接收请求并处理后,必须返回HttpResponse对象或子对象。HttpRequest对象由Django创建,HttpResponse对象由开发人员创建。

7.1 HttpResponse

可以使用django.http.HttpResponse来构造响应对象。

HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
  • 可通过HttpResponse对象属性来设置响应体、响应体数据类型、状态码:
  • content:表示返回的内容。
  • 默认传递字符串,不要传递对象、字典等数据
  • content_type:响应体数据类型
  • status:返回的HTTP响应状态码。
from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
import json
# Create your views here.
def login(request):
    data = {
        'name': 'zszs'
    }
    return HttpResponse(data)

from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
import json
# Create your views here.
def login(request):
    obj = object()
    return HttpResponse(obj)

from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
import json
# Create your views here.
def login(request):
    return HttpResponse('收到请求')

7.2 JsonResponse

JsonResponse为HttpResponse的子类对象。

若要返回json数据,可以使用JsonResponse来构造响应对象。

JsonResponse的作用:

1.帮助我们将数据转换为json字符串

2.设置响应头Content-Type为application/json

from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
from django.http import JsonResponse
import json
# Create your views here.
def login(request):
    data = {
        'name': 'zszszs'
    }
    return JsonResponse(data)

7.3 HttpResponse的其他子类

Django提供了一系列HttpResponse的子类,可以快速设置状态码

  • HttpResponseRedirect 301
  • HttpResponsePermanentRedirect 302
  • HttpResponseNotModified 304
  • HttpResponseBadRequest 400
  • HttpResponseNotFound 404
  • HttpResponseForbidden 403
  • HttpResponseNotAllowed 405
  • HttpResponseGone 410
  • HttpResponseServerError 500

8. 重定向

在浏览器向服务器发送请求成功后,可以将页面重定向到其他的页面或网址。如:用户进行登录,登录成功后跳转到首页,可以使用重定向。

进行重定向使用redirect()

redirect()的导入:

from django.shortcuts import redirect
from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
from django.http import JsonResponse
from django.shortcuts import redirect
from django.urls import reverse
import json
# Create your views here.
def login(request):
    # 请求成功,进行页面跳转
    # 跳转到book/index
    # 由于对路由起了命名空间和路由命名
    # path('book/', include(('book.urls', 'book'), namespace='book'))
    # path('index/', index, name='index')
    # 动态获取路由
    redirect_path = reverse('book:index')
    return redirect(redirect_path)


相关文章
|
2月前
|
算法 关系型数据库 Python
配电网中考虑需求响应(Python代码实现)【硕士论文复现】
配电网中考虑需求响应(Python代码实现)【硕士论文复现】
|
6月前
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
209 13
|
23天前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略
|
2月前
|
运维 算法 新能源
基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
|
2月前
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
3月前
|
JSON 数据挖掘 API
闲鱼商品列表API响应数据python解析
闲鱼商品列表API(Goodfish.item_list)提供标准化数据接口,支持GET请求,返回商品标题、价格、图片、卖家信息等。适用于电商比价、数据分析,支持多语言调用,附Python示例代码,便于开发者快速集成。
|
3月前
|
JSON 自然语言处理 API
闲鱼商品详情API响应数据python解析
闲鱼商品详情API(goodfish.item_get)通过商品ID获取标题、价格、描述、图片等信息,支持Python等多语言调用。本文提供Python请求示例,包含请求构造与数据处理方法。
|
3月前
|
JSON API 数据格式
微店商品列表API响应数据python解析
微店商品列表API为开发者提供稳定高效获取商品信息的途径,支持HTTP GET/POST请求,返回JSON格式数据,含商品ID、名称、价格、库存等字段,适用于电商数据分析与展示平台搭建等场景。本文提供Python调用示例,助您快速上手。
|
4月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
120 1
|
4月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
135 9

推荐镜像

更多