类型错误:parse() 缺少 1 个必需的位置参数:'stream'

Posted

技术标签:

【中文标题】类型错误:parse() 缺少 1 个必需的位置参数:\'stream\'【英文标题】:TypeError: parse() missing 1 required positional argument: 'stream'类型错误:parse() 缺少 1 个必需的位置参数:'stream' 【发布时间】:2021-08-05 23:35:31 【问题描述】:
from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
from rest_framework import serializers
from rest_framework import parsers
from rest_framework.parsers import JSONParser
from .models import Article
from .serializer import Articleserializer
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
# Create your views here.
def artical_list(request):
    if request.method=='GET':
        article= Article.objects.all()
        serializer=Articleserializer(article,many=True)
        return JsonResponse(serializer.data,safe=False)
    elif request.method=='POST':
        data=JSONParser.parse(request)
        serializer=Articleserializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data,status=201)
        return JsonResponse(serializer.errors, status=400)

这是我的序列化程序类 从 django.db.models 导入字段 从 rest_framework 导入序列化程序 从 .models 导入文章

class Articleserializer(serializers.ModelSerializer):
    class Meta:
        model=Article
        fields= ['id','title','author']  

这是我的模型类

from django.db import models

# Create your models here.
class Article(models.Model):
    title=models.CharField(max_length=50)
    author=models.CharField(max_length=100)
    email=models.EmailField(max_length=100)
    date=models.DateTimeField(auto_now_add=True)

    
   

def __str__(self):
    return self.title 

当我使用邮递员发布数据时出现此错误,请帮助我 django rest framwork is

【问题讨论】:

请在问题中显示完整的回溯 【参考方案1】:

JSONParser 应该被实例化。 parse 方法是普通 方法,而不是类方法。所以你需要一个实例让它工作:

JSONParser().parse(request)  # Instead of JSONParser.parse(request)

【讨论】:

以上是关于类型错误:parse() 缺少 1 个必需的位置参数:'stream'的主要内容,如果未能解决你的问题,请参考以下文章

类型错误:预测()缺少 1 个必需的位置参数:'params'

类型错误:new() 缺少 1 个必需的位置参数:'y'

类型错误:攻击()缺少 1 个必需的位置参数:“自我”

类型错误:预测()缺少 1 个必需的位置参数:'y_train'

类型错误:<lambda>() 缺少 1 个必需的位置参数:'w'

类型错误:get() 缺少 1 个必需的位置参数:'index1'