Django返回网页而不是JSON [英] Django returning webpage instead of JSON

查看:44
本文介绍了Django返回网页而不是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 作为

来实现 查看级别 来自rest_framework导入渲染器的

 类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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆