我正在尝试在 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 解析器配置。
- 安装rest_framework_xml :
pip install djangorestframework-xml
- 更新 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',
]
- 在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/