如果没有另外指定,我正在尝试创建一个返回常规 html 响应的视图。如果需要,我正在使用 django 的 rest_framework 返回 JSON。
除了我想在模板中访问我的上下文的部分之外,所有工作都很好。
这是基于图片的小代码示例:
@api_view(('GET', ))
@renderer_classes((TemplateHTMLRenderer, UnicodeJSONRenderer, JSONRenderer, BrowsableAPIRenderer))
def index(request):
queryset = Picture.objects.all()
page = request.GET.get('page')
paginator = Paginator(queryset, 25)
try:
pictures = paginator.page(page)
except PageNotAnInteger:
pictures = paginator.page(1)
except EmptyPage:
pictures = paginator.page(paginator.num_pages)
serializer_context = {'request': request, 'pictures': pictures, 'filter': FilterForm()}
serializer = PaginatedPictureSerializer(pictures, context=serializer_context)
return Response(serializer.data, template_name='index.html')
当我想在模板中访问我的上下文时是新的:
{% if pictures %}
{% for picture in pictures %}
...
{% endfor %}
{% else %}
<p>No pictures are available.</p>
{% endif %}
结果总是:没有可用的图片(调试也是如此)。
编辑: 根据要求
class PictureSerializer(serializers.ModelSerializer):
class Meta:
model = Picture
class PaginatedPictureSerializer(pagination.PaginationSerializer):
class Meta:
object_serializer_class = PictureSerializer