【问题标题】:Django api save to database (without REST frame work)Django api 保存到数据库(没有 REST 框架)
【发布时间】:2017-07-13 09:27:53
【问题描述】:

如何使用 Django 但没有休息框架来完成以下任务? 例如,如何将用户保存到我的模型中? 这是我当前的代码:

序列化器

from rest_framework import serializers
from .models import User,Blog

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('std_num','password' , 'first_name',  'last_name', 'email') 

观看次数

from rest_framework.views import  APIView
from rest_framework.response import  Response
from rest_framework import  status
from .models import User
from .serializers import UserSerializer

class register (APIView):
    def post(self, request):

        serializer = UserSerializer(data = request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=111)
        return Response(serializer.errors, status=100)

【问题讨论】:

  • 您为什么不想使用 django-rest-framework,因为它目前可以满足您的需求?
  • 这是一个项目,很遗憾,我们不被允许。
  • 我不明白这是什么意思。你不被允许什么?什么样的项目不允许使用最好的工具?
  • 大学项目!
  • 如果您需要帮助调试错误,您必须提供minimal reproducible example 并解释预期的行为和错误是什么。 “我如何实现这个”对于 Stack Overflow 来说太宽泛了。具体:How to Ask

标签: python django api django-rest-framework


【解决方案1】:
import json
from .models import User
from django.http import HttpResponse
from django.views import View

class register(View):
    def post(self, request):
        if not request.POST.get('password') or not request.POST.get('email'):
            #Do checking for other values 
            return_dict = {'status':False,'code':111}
        else:
           user_obj =User.objects.create(email=request.POST.get('email'),
                                  password=request.POST.get('password'))
           #save the needed values 
           user_obj.save()
           return_dict = {'status':True,'code':100}
        return HttpResponse(json.dumps(return_dict))

检查 api 响应中的“代码”或“状态”值以执行相关操作

【讨论】:

    【解决方案2】:

    您不需要显式创建 User 对象。这项工作是通过调用 serializer.save() 来完成的。您自己创建用户将是低效的。 Django 提供了内置功能,但如果您愿意,可以覆盖它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2018-07-02
      • 2017-09-24
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多