Django – Kontext muss ein Diktat und keine ReturnList seinPython

Python-Programme
Anonymous
 Django – Kontext muss ein Diktat und keine ReturnList sein

Post by Anonymous »

Ich arbeite an einem Django-Projekt und habe ein Post-Modell, das diese Ansicht hat:

Code: Select all

class PostListApiView(ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
filter_backends = [SearchFilter]
search_fields = ['user','title','content']
Ich verwende diese Ansicht, um neue Beiträge zu erstellen:

Code: Select all

@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('/')
Ich möchte beide Ansichten in einer Ansicht konsolidieren

Code: Select all

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'
aber wenn ich versuche, den TemplateHTMLRenderer zur ListCreateAPIView hinzuzufügen, erhalte ich diese Fehlermeldung:

Code: Select all

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.
Kann ich TemplateHTMLRenderer verwenden, um einen Abfragesatz und ein Formular in einer Vorlage zu rendern? Wenn nicht, wie kann ich das erreichen?
Vielen Dank

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post