django - 使用 django rest 框架发布时发生 AssertionError
问题描述
使用django rest framework 发帖时出现AssertionError 出现错误前的流程是这样的
- 我设置了 url 模式、视图和序列化程序类
from django.urls import include, path
from rest_framework.routers import DefaultRouter
from . import views
router = DefaultRouter()
router.register('post' , views.PostViewSet)
# print("router.urls : " , router.urls)
urlpatterns = [
path('public/' , views.PublicPostListAPIView.as_view()),
path('', include(router.urls)),
]
看法
from rest_framework import generics
from rest_framework.viewsets import ModelViewSet
from .serializers import PostSerializer
from .models import Post
class PublicPostListAPIView(generics.ListAPIView):
queryset = Post.objects.filter(is_public=True)
serializer_class = PostSerializer
class PostViewSet(ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
序列化程序.py
from django.contrib.auth import get_user_model
from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from instagram.models import Post
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ['username','email']
class PostSerializer(ModelSerializer):
author = AuthorSerializer()
class Meta:
model = Post
fields = [
'pk',
'author',
'message',
'created_at',
'updated_at',
'is_public',
]
- 向以下地址索取
http://127.0.0.1:8000/post/
3.发布
4.错误发生如下
谢谢你让我知道如何解决它
解决方案
假设保存author
您在PostSerializer
. 您可以像这样拥有自己的 create() 方法 -
def create(self, validate_data):
data = validated_data
author = data.get('author')
# You can use author details here
data.pop('author')
return Post.objects.create(**data)
推荐阅读
- java - 获取 RestFul WebService 的好习惯?
- php - Laravel,迁移,外键约束形成不正确
- google-maps - Flutter/ googlemap 上面有另一个布局
- javascript - 将html页面上显示的文本复制到文本文件中
- python - 如何在python中发送多个线程进行Nmap扫描?
- javascript - 获取本地存储值并在redux中切换存储
- azure - 创建后是否可以在 Azure AKS 上启用 HTTP 应用程序路由?
- c++ - 使用 QT5.11 将浮动按钮保持在相对于窗口和窗口范围内的位置
- excel - Excel 指向 CELL-INDEX-MATCH 源的超链接,在多列的单元格数组中搜索
- sql - 创建表异常