Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django提供XML和HTML_Python_Xml_Django_Http_Http Headers - Fatal编程技术网

Python 使用Django提供XML和HTML

Python 使用Django提供XML和HTML,python,xml,django,http,http-headers,Python,Xml,Django,Http,Http Headers,我有一个Django应用程序,它必须向普通浏览器提供HTML文件,理解HTML,并向其他客户端提供XML文件。 在my views.py中,我试图区分不同的HTTP_ACCEPT标记,传入的HTTP请求具有不同的属性。这似乎已经起作用了,因为正常的HTML文件是按预期的方式提供的 只有当我尝试为XML文件提供服务时,才会出现一个错误,错误是: /appstore处的值错误/ 视图appstore.views.index未返回HttpResponse对象 这是我的观点 from appstore.

我有一个Django应用程序,它必须向普通浏览器提供HTML文件,理解HTML,并向其他客户端提供XML文件。 在my views.py中,我试图区分不同的HTTP_ACCEPT标记,传入的HTTP请求具有不同的属性。这似乎已经起作用了,因为正常的HTML文件是按预期的方式提供的

只有当我尝试为XML文件提供服务时,才会出现一个错误,错误是:

/appstore处的值错误/ 视图appstore.views.index未返回HttpResponse对象

这是我的观点

from appstore.models import App
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponse
from django.core import serializers

def index(request):
  if (request.META['HTTP_ACCEPT'].find('text/html') != -1):
    latest_app_list = App.objects.all().order_by('name')[:5]
    return render_to_response('appstore/index.html', {'latest_app_list': latest_app_list})
  else:
      def xml_view(func):
        def wrapper(*args, **kwargs):
          result = func(*args, **kwargs)
          return HttpResponse(serializers.serialize("xml", result),
            mimetype="text/xml")
        return wrapper
      @xml_view
      def index(request):
        return App.objects.all()
      @xml_view
      def get(request, id):
        return get_object_or_404(App, pk=app_id)
我希望你们中有人能帮助我。
提前感谢。

在其他部分中,您只定义了函数。不打电话。因此,在另一个注意事项上,我看到了您使用包装器来保持代码模块化的想法,但我将重新讨论实现。我并不是说它是错误的,只是不太可读或不可维护。包装器对我来说似乎没问题,但它应该定义一次并在视图函数本身上使用。或者您可以使用基于类的视图和继承来保持事物的有序性。