Django返回网页而不是JSON [英] Django returning webpage instead of JSON
问题描述
我是Django的新手,正在尝试在Django中实现基本的REST API.我在MySQL数据库中有一个新闻列表,并且按照各种教程操作,成功地实现了一个响应新闻列表的Web服务.
如您所见,我在这里得到一个网页.但是我真正需要的是上述API仅返回json.我不想在我的Web服务中提供此类页面,而只是JSON响应.当然,只有将 format = json
附加到请求中,我才能获得json.但这不是我所需要的.我希望网页消失并调用 http://127.0.0.1:8000/rest/news_infos/
来返回json.
以下是我的views.py代码:
来自rest_framework导入视图集的 从.models导入NewsContent,NewsInfo从.serializers导入NewsContentSerializer,NewsInfoSerializer类NewsContentViewSet(viewsets.ViewSet):queryset = NewsContent.objects.all()[:10]serializer_class = NewsContentSerializer类NewsInfoViewSet(viewsets.ModelViewSet):queryset = NewsInfo.objects.all()[:10]serializer_class = NewsInfoSerializer
请让我知道是否需要其他代码/信息.在线找不到任何合适的解决方案.
将 settings.py
中的 DEFAULT_RENDERER_CLASSES
更改为
>
REST_FRAMEWORK = {'DEFAULT_RENDERER_CLASSES':('rest_framework.renderers.JSONRenderer',)}
可以通过提供 renderer_classes
作为
类MyView(...):renderer_classes = [renderers.JSONRenderer]
I am fairly new to Django and am trying to implement a basic REST API in Django. I am having a news list in MySQL Database, and following various tutorials, successfully managed to implement a webservice that responds the news list.
http://127.0.0.1:8000/rest/news_infos/
The above URL(local) produces the following page:
As you can see, I am getting a webpage here. But what I actually needed is that the above API to return just the json. I don't want to have this kind of pages available in my webservice, just the JSON response. Of course I can get it json only by appending format=json
to the request. But that is not what I require. I want the web page to be gone and calling http://127.0.0.1:8000/rest/news_infos/
to return the json instead.
Following is my views.py code:
from rest_framework import viewsets
from .models import NewsContent, NewsInfo
from .serializers import NewsContentSerializer, NewsInfoSerializer
class NewsContentViewSet(viewsets.ViewSet):
queryset = NewsContent.objects.all()[:10]
serializer_class = NewsContentSerializer
class NewsInfoViewSet(viewsets.ModelViewSet):
queryset = NewsInfo.objects.all()[:10]
serializer_class = NewsInfoSerializer
Please let me know if any other code/info is required. Couldn't find any proper solution online.
Change DEFAULT_RENDERER_CLASSES
in settings.py
as
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
It could be done view level by providing renderer_classes
as,
from rest_framework import renderers
class MyView(...):
renderer_classes = [renderers.JSONRenderer]
这篇关于Django返回网页而不是JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!