med*_*ean 6 python django rest json django-rest-framework
如何从 django django-rest-framework 的视图有条件地返回 json 或 html 响应。
1) djangorestframework==2.3.10
2)设置.py:
REST_FRAMEWORK = {
'PAGINATE_BY': 10,
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.TemplateHTMLRenderer',
'rest_framework.renderers.JSONRenderer',
)
}
Run Code Online (Sandbox Code Playgroud)
3) 在我的 url.py 中,我将其添加为最后一行 urlpatterns = format_suffix_patterns(urlpatterns, allowed=['json', 'html'])
4)我的观点是这样的:
def myview(request, id, format='json'):
if format == 'json' or format is None:
return Response(my_dict, status=status.HTTP_200_OK)
else:
return Response(my_dict, template_name='myhtml.html')
Run Code Online (Sandbox Code Playgroud)
如果我在 url 请求中明确使用 .html 或 .json format_prefix ,一切正常。但是如果我没有指定任何格式,它会给我以下错误。我也试过: urlpatterns = format_suffix_patterns(urlpatterns, allowed=['json', 'html', 'None']) 但它也不起作用。
ImproperlyConfigured at /objects/29 返回没有template_name在视图或响应上设置属性的模板响应请求方法:GET 请求 URL:localhost:8000/objects/29 Django 版本:1.7 异常类型:ImproperlyConfigured 异常值:
返回模板响应没有template_name在视图或响应上设置属性异常位置:D:\WORKSPACE\magg\magg-workspace\maggallan\maggallan\maggenv\lib\site-
这对我有用:
class MyView(ListAPIView):
renderer_classes = (JSONRenderer, TemplateHTMLRenderer,)
def get(self, request, *args, **kwargs):
data = SomerSerializer([]).data
if request.accepted_renderer.format == 'html':
return Response(data, template_name='blah.html')
return Response(data)
Run Code Online (Sandbox Code Playgroud)
仅供参考,我以前遇到过这个错误,但这不是因为它配置正确——而是因为在它出错之前有一些不相关的代码——所以寻找其他任何可能失败的东西。另请注意,您的“其他”是多余的。
| 归档时间: |
|
| 查看次数: |
6933 次 |
| 最近记录: |