如何开发无数据库的Django REST API:接收CSV返回JSON
无数据库的Django REST API:CSV转JSON
1. 基础配置
- 先安装依赖:
pip install djangorestframework - 在项目的
settings.py中,将rest_framework和你的目标应用(比如命名为csv_converter)加入INSTALLED_APPS:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'csv_converter', # 替换成你的应用名称 ]
2. 编写核心视图
在应用的views.py中创建一个API视图,专门处理CSV上传与JSON转换:
import csv from io import StringIO from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status class CSVToJSONAPI(APIView): def post(self, request): # 校验文件是否存在 if 'file' not in request.FILES: return Response({"error": "请上传CSV文件"}, status=status.HTTP_400_BAD_REQUEST) uploaded_file = request.FILES['file'] # 校验文件格式 if not uploaded_file.name.lower().endswith('.csv'): return Response({"error": "仅支持CSV格式文件"}, status=status.HTTP_400_BAD_REQUEST) try: # 读取并解码文件内容 content = uploaded_file.read().decode('utf-8') # 使用DictReader自动将表头作为键 csv_reader = csv.DictReader(StringIO(content)) # 转换为JSON格式的列表 json_result = list(csv_reader) return Response(json_result, status=status.HTTP_200_OK) except Exception as e: return Response({"error": f"CSV解析失败: {str(e)}"}, status=status.HTTP_400_BAD_REQUEST)
3. 配置路由
在项目根目录的urls.py中添加API路由:
from django.urls import path from csv_converter.views import CSVToJSONAPI urlpatterns = [ # 其他路由... path('api/csv-to-json/', CSVToJSONAPI.as_view(), name='csv_to_json'), ]
4. 测试接口
- 启动Django服务:
python manage.py runserver - 使用Postman、curl或其他工具发起POST请求到
http://127.0.0.1:8000/api/csv-to-json/ - 请求体选择
form-data,键名设为file,上传本地任意结构的CSV文件,即可得到对应的JSON响应
内容的提问来源于stack exchange,提问作者user20627094
相关产品推荐
相关产品推荐

