使用Django REST Framework时如何避免输入数据被存入数据库
实现步骤
- 替换绑定模型的
ModelSerializer为普通序列化器,保留参数校验能力的同时解除数据库绑定 - 视图中删除触发数据库写入的
serializer.save()调用,直接处理校验通过的参数后返回结果 - 清理无用的模型代码,若整个项目完全不需要数据库可修改配置禁用数据库相关逻辑
- 修正原
urls.py中视图类名称不匹配的错误
修改后完整代码
1. serializers.py
from rest_framework import serializers # 改用普通Serializer,仅做参数校验,不绑定数据库模型 class MySerializer(serializers.Serializer): value = serializers.IntegerField()
2. views.py
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from .serializers import MySerializer class MyViews(APIView): def post(self, request): serializer = MySerializer(data=request.data) if serializer.is_valid(): # 取校验通过的参数 input_value = serializer.validated_data['value'] # 此处替换为你自己的数值处理逻辑,示例为数值乘以2 processed_value = input_value * 2 # 返回处理后的结果 return Response({ "status": "success", "original_value": input_value, "processed_value": processed_value }, status=status.HTTP_200_OK) else: return Response({"status": "error", "data": serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
3. urls.py
from django.urls import path from .views import MyViews urlpatterns = [ # 修正原视图类名称错误 path('api', MyViews.as_view()) ]
4. 可选配置(全局禁用数据库)
如果整个Django项目都不需要使用数据库,可以修改settings.py:
- 删掉
models.py中无用的MyModel类 - 将数据库配置改为虚拟引擎,避免启动时校验数据库连接:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.dummy', } }
- 可以注释
INSTALLED_APPS中依赖数据库的内置应用,比如django.contrib.auth、django.contrib.contenttypes、django.contrib.sessions,进一步精简项目。
内容的提问来源于stack exchange,提问作者Talha Anwar
相关产品推荐
相关产品推荐

