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 freamwork 是
JSONParser
应该被实例化。 parse
方法是一个 normal 方法,而不是类方法。所以你需要一个实例才能工作:
JSONParser().parse(request) # Instead of JSONParser.parse(request)
解析 JSON 数据,这不是正确的方法。您应该使用 JSONParser() 代替。
from django.shortcuts import render
from django.http import JsonResponse
from rest_framework.parsers import JSONParser
from .models import Article
from .serializers import ArticleSerializer
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def article_list(request):
if request.method == 'GET':
articles = Article.objects.all()
serializer = ArticleSerializer(articles, 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)
使用 Postman 进行测试时,请确保在 POST 请求正文中提供合法的 JSON 负载。