gpt4 book ai didi

python - 没有获取表单以在 Django REST 框架中发布数据

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:39 24 4
gpt4 key购买 nike

我在 Django 休息框架中使用基于函数的 View 。但是当我在浏览器中打开网页时,我没有获得发布数据的表格。当我向下滚动时获得媒体类型和内容选项而不是我的模型字段。在我的模型中,我有 user_name、user_email 字段但没有显示在那里。我需要为此使用基于类的 View 吗?下面是屏幕截图。

@api_view(['GET','POST'])
def user_list(request):
if request.method == 'GET':
data = User_Data.objects.all()
serializer = User_Data_Serializers(data)
return Response(serializer.data)
if request.method == 'POST':
data = request.data
serializer = User_Data_Serializers(data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status = status.HTTP_201_CREATED)

return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)

screenshot

最佳答案

这在使用 DRF 功能 View 时是不可能的。您将需要切换到基于类的 View 或 DRF 的 View 集。原因是因为为了渲染表单,DRF 渲染器需要知道哪个序列化程序用于 View ,它可以从中提取所有不同的字段。在 CBV 中,它是通过使用属性定义的:

class MyViewSet(ViewSet):
serializer_class = MySerializer

由于在功能 View 中没有等效的方法,我认为不可能实现您的要求。


您要实现的目标在 DRF View 集中实际上非常简单:

# viewsets.py
class UserViewSet(ListCreateAPIView):
queryset = User_Data.objects.all()
serializer_class = User_Data_Serializers

# urls.py
router = DefaultRouter()
router.register(r'users', UserViewSet, 'users')
urlpatterns = router.urls

上面的 3 行 View 集实现了与功能 View 相同的效果。我觉得很酷!

关于python - 没有获取表单以在 Django REST 框架中发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31914963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com