2017-09-13 14 views
0

xslファイルのコンテンツタイプを設定しようとしています。これは、これまでのところ、私がやっていること Django Content-Type for text/xsl

def xsl_content_type(): 

    filename = static('sitemap.xsl') 
    response = HttpResponse(filename) 
    response['Content-Type'] = "text/xsl" 
    response['Content-Length'] = len(filename) 
    return response 

である。これは

HTTP/1.0 200 OK 
Date: Wed, 13 Sep 2017 05:04:46 GMT 
Server: WSGIServer/0.2 CPython/3.6.1 
Last-Modified: Tue, 13 Jun 2017 03:54:17 GMT 
Content-Length: 7134 
Content-Type: application/octet-stream 
Cache-Control: max-age=0, public 
Access-Control-Allow-Origin: * 

を返したとしても、私が得るすべてはapplication/octet-streamで、私はセットアップにtext/xslとしてContent-Typeをしたと思いました。私もresponse = HttpResponse(filename, content_type="text/xsl")をやってみましたが、コンテンツタイプは同じです。

私はここで何が欠けていますか? url(r'^sitemap\.xsl', xsl_content_type, name='sitemap_xsl')次のコードを追加します

views.py

urlpatternsを追加

+0

こんにちは、このhttps://djangotricks.blogspot.in/2013/12/how-to-export-data-as-excel.htmlをご覧ください – Robert

答えて

0

良い方法があるかもしれませんが、以下は

urls.py

私を助けました:

def xsl_content_type(request): 
    """ 
    Converts the MIME type of `sitemap.xsl`. 

    Returns 
    ------- 
    HttpResponse: HttpResponse 
     Returns `sitemap.xsl`. 

    """ 

    if 'DYNO' in os.environ: 

     url = os.path.join(settings.STATIC_URL, 'sitemap.xsl') 
     user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7' 
     headers = {'User-Agent': user_agent, } 

     request = urllib.request.Request(url, None, headers) 
     response = urllib.request.urlopen(request) 
     data = response.read().decode('UTF-8') 
    else: 
     data = open(os.path.join(settings.STATIC_ROOT, 'sitemap.xsl')).read() 

    return HttpResponse(data, content_type="text/xsl") 

注:DYNOはHeroku環境変数です。本番環境で使用する場合は、必要に応じて独自の環境変数を追加できます。

関連する問題