python - 如何在Django Rest Framework中获取xml格式

标签 python xml django rest django-rest-framework

我正在尝试在 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/

最佳答案

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

  1. 安装rest_framework_xml : pip 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',
  ),
}

关于python - 如何在Django Rest Framework中获取xml格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41046908/

相关文章:

python - django.db.utils.IntegrityError : FOREIGN KEY constraint failed

python - pip3 和 `python3 setup.py install` 关于 cmdclass 参数的区别

xml - 如何使用 PowerShell 提取 Epub 元数据 (XML)?

Django错误 '' WSGIRequest'对象没有属性 'Players''

java - 来自 xmlbeans 的 RuntimeException - 找不到已编译的模式

xml.etree.ElementTree 插入子节点的子节点创建无限循环 Python

python - 抽象 Django 类中的多个外键字段

python - 如何在 Python 中切换字典的嵌套结构

python - vlc.py 是如何播放视频流的?

python - 正则表达式替换无法在Python中用正则表达式变量替换