django json 接口获取返回

本文介绍了一种通过JSON数据格式实现在Flask应用与Django应用之间的数据交互的方法。具体展示了如何从Flask发送POST请求到Django,并解析传来的JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意  当接受不了post  get数据时  请注释 csrf


当别的app访问django的api的时候,通常使用json传递数据。 以下为实例:


flask请求方

# -*- coding=utf-8 -*-
from flask import Flask
import json
import requests

app = Flask(__name__)
app.debug=True

@app.route('/',methods=['GET','POST'])
def wechat_auth():
    d = {'a':'a1'}
    data = json.dumps(d)
    r = requests.post('http://10.10.110.10:8000/get_file_tree',data=data)
    c = r.text
    print c
    return c

if __name__ == '__main__':
    app.run()


django 接受方

#coding:utf-8
import requests
import json
from django.shortcuts import render
from django.http import HttpResponse
from models import Server, Clone
import json

def create(request):
    url = Server.objects.all()
    if request.method == 'POST':
        data = request.body 
        # 获取request的请求中的数据。在此因为传来的是json所以是字符格式
        return HttpResponse(json.dumps([list,dict]), content_type="application/json")
        # 将list或者dict转化为json格式   然后返回json数据。

以上则实现功能

### Django 中如何解析和获取 JSON 数据Django 应用程序中处理来自前端的 JSON 数据是一项常见需求。以下是关于如何实现这一功能的具体说明。 #### 1. 前端发送 JSON 数据 为了使 Django 能够接收并解析 JSON 数据,前端需要通过 AJAX 请求将数据以 `application/json` 的 MIME 类型发送到后端。例如: ```javascript fetch('/api/endpoint/', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ key1: 'value1', key2: 'value2' }) }); ``` 上述代码展示了如何从前端向 `/api/endpoint/` 发送 POST 请求,并附带 JSON 格式的请求体[^1]。 --- #### 2. 后端配置 URL 和视图函数 在 Django 中,URL 配置文件 (`urls.py`) 定义了路由规则。假设我们希望监听路径 `/api/endpoint/` 上的请求,则可以这样定义: ```python from django.urls import path from .views import handle_json_data urlpatterns = [ path('api/endpoint/', handle_json_data), ] ``` 接着,在对应的视图函数中编写逻辑来解析接收到的数据。 --- #### 3. 解析 JSON 数据 当客户端以 `application/json` 形式发送数据时,Django 不会自动将其放入 `request.POST` 或其他内置对象中。相反,开发者需手动读取 HTTP 请求主体 (body),并通过 Python 的标准库模块 `json` 进行解码。以下是一个完整的示例: ```python import json from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def handle_json_data(request): if request.method == 'POST': try: data = json.loads(request.body.decode('utf-8')) # 访问 JSON 数据中的键值对 value1 = data.get('key1') value2 = data.get('key2') response_data = {'status': 'success', 'received_key1': value1, 'received_key2': value2} return JsonResponse(response_data) except Exception as e: error_message = f'Error parsing JSON: {str(e)}' return JsonResponse({'error': error_message}, status=400) return JsonResponse({'error': 'Invalid request'}, status=405) ``` 在此代码片段中: - 使用 `request.body` 获取原始请求体内容。 - 利用 `json.loads()` 方法将字符串形式的 JSON 转换为 Python 字典。 - 提供了一个错误捕获机制,以便更优雅地处理潜在异常情况[^2]。 注意:由于此示例禁用了 CSRF 保护(通过装饰器 `@csrf_exempt`),因此仅适用于 API 场景或其他无需 CSRF 验证的情况。对于常规表单提交,请保留默认的安全措施[^3]。 --- #### 4. 测试接口 可以通过工具如 Postman 或 curl 来测试该接口的功能是否正常工作。例如使用 curl 执行如下命令: ```bash curl -X POST http://localhost:8000/api/endpoint/ \ -H "Content-Type: application/json" \ -d '{"key1": "test_value", "key2": "another_test"}' ``` 如果一切设置无误,应该能够看到返回的成功消息及其所含参数值。 --- #### 总结 综上所述,在 Django获取 JSON 数据涉及以下几个关键步骤:确保前端正确传递 JSON 格式化的内容;调整后端 URL 映射至适当处理器;最后由自定义视图负责提取与验证传入的信息流[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值