Nar*_*esh 3 python django django-serializer django-rest-framework
我在Django rest框架中使用基于函数的视图.但是当我在浏览中打开网页时,我没有获得发布数据的表单.当我向下滚动获取媒体类型和内容选项而不是我的模型字段时.在我的模型中,我有user_name,user_email字段但没有在那里显示.我需要使用基于类的视图吗?以下是截图.
@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)
Run Code Online (Sandbox Code Playgroud)
使用DRF功能视图时,这是不可能的.您需要切换到基于类的视图或DRF的视图集.原因是,为了呈现表单,DRF渲染器需要知道哪个序列化程序正用于视图,从中可以提取所有各种字段.在CBV中,它通过使用属性定义:
class MyViewSet(ViewSet):
serializer_class = MySerializer
Run Code Online (Sandbox Code Playgroud)
由于在功能视图中没有相同的功能,我认为不可能达到您的要求.
您想要实现的目标实际上在DRF视图集中非常简单:
# 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
Run Code Online (Sandbox Code Playgroud)
以上3行视图集实现了与功能视图相同的效果.我觉得很酷!
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |