You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:54:03