Джанго – контекст должен быть dict, а не ReturnListPython

Программы на Python
Ответить
Anonymous
 Джанго – контекст должен быть dict, а не ReturnList

Сообщение Anonymous »

Я работаю над проектом Django, и у меня есть модель Post, которая имеет следующее представление:

Код: Выделить всё

class PostListApiView(ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
filter_backends = [SearchFilter]
search_fields = ['user','title','content']
Я использую это представление для создания новых сообщений:

Код: Выделить всё

@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('/')
Я хочу объединить оба представления в одно,

Код: Выделить всё

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'
но когда я пытаюсь добавить TemplateHTMLRenderer в ListCreateAPIView, я получаю эту ошибку:

Код: Выделить всё

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.
Могу ли я использовать TemplateHTMLRenderer для отображения набора запросов и формы в шаблоне? Если нет, то как мне этого добиться?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/608 ... returnlist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»