【问题标题】:How to get xml format in Django Rest Framework如何在 Django Rest Framework 中获取 xml 格式
【发布时间】:2017-04-24 03:13:59
【问题描述】:

我正在尝试在Django Rest FrameWork中获取xml格式,我尝试了Django Rest Framework提供的教程,我是django的新手,我做了以下。

settings.py

 INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'rest_framework',
        'books',
        'users',
    ]

urls.py

from django.conf.urls import url
from django.contrib import admin
from books.views import *
from users.views import *
from rest_framework.urlpatterns import format_suffix_patterns

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^books/all/$', all_books),
        url(r'^user/', get_user)
    ]

    urlpatterns = format_suffix_patterns(urlpatterns, allowed=['json', 'html','xml'])

views.py

from rest_framework.response import Response
from rest_framework.decorators import api_view
from books.serializers import *
from books.models import *

# Create your views here.

@api_view(['GET'])
def all_books(request):
    books = Book.objects.all()
    serializers = BookSerializer(books,many=True)
    return Response(serializers.data)

当我尝试访问 xml 数据时,我通过执行 ?format=xml 得到此错误

{"detail":"Not found."}

教程链接http://www.django-rest-framework.org/api-guide/format-suffixes/

【问题讨论】:

标签: python xml django rest django-rest-framework


【解决方案1】:

实际上您的settings.py 缺少 xml 解析器配置。

  1. 安装rest_framework_xmlpip install djangorestframework-xml
  2. settings.py 中更新 INSTALLED_APPS
INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'rest_framework',
  'rest_framework_xml',
  'books',
  'users',
]
  1. settings.py中添加xml解析器:
REST_FRAMEWORK = {
  'DEFAULT_PARSER_CLASSES': (
    'rest_framework_xml.parsers.XMLParser',
  ),
    'DEFAULT_RENDERER_CLASSES': (
    'rest_framework_xml.renderers.XMLRenderer',
  ),
}

【讨论】:

  • 我收到此错误 ImportError:无法为 API 设置“DEFAULT_RENDERER_CLASSES”导入“rest_framework_xml.renderers.XMLRenderer”。 ImportError:没有名为“rest_framework_xml”的模块。
  • 您必须按照错误说明安装rest_framework_xml。我将更新答案以使其成为一个完整的答案。
  • 你关注我的最新动态了吗?您必须如上所述将其添加到 INSTALLED_APPS 列表中。它在本地测试并使用上面的配置。
  • 是的,我收到 ImportError: No module named 'rest_framework_xml',但它已经安装并且我添加了 'rest_framework_xml'。
  • 这绝对是奇怪的。检查您的环境。
猜你喜欢
  • 2017-06-22
  • 2013-11-17
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 2014-06-23
相关资源
最近更新 更多