[Python] Django - context must be a dict rather than ReturnList

Discussão em 'Python' iniciado por Stack, Novembro 30, 2025.

  1. Stack

    Stack Membro Participativo

    I am working on a Django project and I have a Post Model, which has this view:

    class PostListApiView(ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    filter_backends = [SearchFilter]
    search_fields = ['user','title','content']


    I use this view to create new posts:

    @method_decorator(login_required, name='dispatch')
    class PostCreateView(APIView):
    queryset = Post.objects.all()
    serializer_class = PostCreateSerializer
    renderer_classes = [TemplateHTMLRenderer]
    permission_classes = [IsAuthenticated]
    template_name = 'post_form.html'

    def get(self, request, format=None):
    serializer=PostCreateSerializer()
    return Response({'serializer':serializer})

    def post(self, request):
    serializer = PostCreateSerializer(data=request.data)
    if not serializer.is_valid():
    return Response({'serializer':serializer})
    serializer.save()
    return redirect('/')


    I want to consolidate both views into one view,

    class PostListApiView(ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    filter_backends = [SearchFilter]
    search_fields = ['user','title','content']
    renderer_classes = [TemplateHTMLRenderer]
    template_name = 'post_form.html'


    but when I try to add the TemplateHTMLRenderer to the ListCreateAPIView, I get this error:

    Traceback (most recent call last):
    File "C:\...\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
    File "C:\...\lib\site-packages\django\core\handlers\base.py", line 145, in _get_response
    response = self.process_exception_by_middleware(e, request)
    File "C:\...\lib\site-packages\django\core\handlers\base.py", line 143, in _get_response
    response = response.render()
    File "C:\...\lib\site-packages\django\template\response.py", line 105, in render
    self.content = self.rendered_content
    File "C:\...\lib\site-packages\rest_framework\response.py", line 70, in rendered_content
    ret = renderer.render(self.data, accepted_media_type, context)
    File "C:\...\lib\site-packages\rest_framework\renderers.py", line 167, in render
    return template.render(context, request=request)
    File "C:\...\lib\site-packages\django\template\backends\django.py", line 59, in render
    context = make_context(context, request, autoescape=self.backend.engine.autoescape)
    File "C:\...\lib\site-packages\django\template\context.py", line 270, in make_context
    raise TypeError('context must be a dict rather than %s.' % context.__class__.__name__)

    Exception Type: TypeError at /posts/
    Exception Value: context must be a dict rather than ReturnList.


    Can I use TemplateHTMLRenderer to render a queryset and a form on a template? If not, how can I achieve this?

    Thank you

    Continue reading...

Compartilhe esta Página