3

私のブラウザー (firefox) コンソールは、ステータス 200 のファイルの受信を確認しますが、 firefox は次のように表示します。

The stylesheet http://localhost:8000/css/full-width-pics.css was not loaded because its MIME type, "text/html", is not "text/css". localhost:8000
The stylesheet http://localhost:8000/css/mainstyle.css was not loaded because its MIME type, "text/html", is not "text/css". localhost:8000

Djangoファイルを提供しているが、mimetype が間違っているというさらなるふざけ: すべてのファイルがステータス コード 200 を返す:

[05/Jul/2015 08:52:33]"GET / HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /css/full-width-pics.css HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /js/bootstrap.min.js HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /css/mainstyle.css HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /js/jquery.js HTTP/1.1" 200 6263

これは私がこれまでに見つけたものです。

Django は Python を使用して MIME タイプを推測します。Python は、それが実行されているシステムを使用して MIME タイプを推測します。レジストリのどこかにあるウィンドウ。私は Ubuntu を使用しているので、/etc/mime.types にあります。

/etc/mime.types で次の行を見つけました。

text/css                    css

これは、問題が私のシステムにないことを意味します。問題はpythonですか?いいえ。次を実行します。

import mimetypes
mimetypes.guess_type("test.css")

私に次を与えます:

('test/css', none)

他のスタックオーバーフローの回答からいくつかの「ハック」を試しました。1 つのハックは、mimetypes.add_type("text/css", ".css", True)settings.py に追加することでした。うまくいきませんでした。

もう1つは、url(r'.*\.css$', views.css),urls.pyに追加し、これをviews.pyに追加することでした:

def css(request):
    filename = request.path.strip("/")
    data = open(filename, "rb").read()
    return HttpResponse(data, mimetype="text/css")

また、機能しませんでした。両方とも外しました。なぜこれが起こっているのか、どうすれば適切に修正できるのかを知りたいだけです。問題は Django にあると確信していますが、どこにあるのかわかりません。

もう一つ重要な情報。これは、テンプレートの継承を使い始めた後にのみ発生し始めました。以前<link href="css/full-width-pics.css" rel="stylesheet" type="text/css" />は index.html に直接あり、正常に機能しました。現在は base.html と index.html にあり、base.html を「拡張」しています。私はDjangoを学んでいるので、テンプレート継承を使い始めました。

これをすべて読んでくれてありがとう。

4

0 に答える 0