1

私はDjango 1.8を使用しています。両方の css ファイルでステータス 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

何らかの理由で、ファイルは text/css ではなく text/html として提供されています。これは私のhtmlです。

  <link href="css/full-width-pics.css" rel="stylesheet" type="text/css" />
    <link href="css/mainstyle.css" rel="stylesheet" type="text/css" />

これは base.html ファイルにあります。index.html ファイルで base.html を拡張します。テンプレート継承の使用を開始し、すべてを index.html に含める前は、正常に機能していました。

私はUbuntuを使用しています。/etc/mime.types を確認しました。css は text/css でリストされます。

これは私を本当に混乱させました

4

1 に答える 1

0

2020年 答え:

ブラウザによって自動検出される MIME コンテンツ タイプが必要な場合は、これが解決策です。

何度も失敗した静的な試みの後、これが動的な解決策です。

def fetch(request):
    import mimetypes
    clientRequestUrl=os.getcwd()+'/servlet'+request.path
    try: return HttpResponse(fread(clientRequestUrl), content_type=mimetypes.guess_type(request.path)[0])
    except Exception as e: return HttpResponse(str(e)+'===> Error Thrown <br>')
  • ここで fread()は try でファイルを直接読み取りますが、ブロックは単なる I/O ラッパーです
  • try ブロックで --> content_type=mimetypes.guess_type(request.path)[0] はMIME検出マジック [0] を実行します。つまり、最初の要素が必要です。これは、最初に MIME タイプで 2 番目にエンコーディングであるタプルを返すためです。
  • request.path は、ファイル パスに基づいてMIMEを推測するため、上記の行で渡されます。たとえば、クライアント(ブラウザ)が要求した場合、stylsheet.css という名前のファイルの text/css 。
  • clientRequestUrl = クライアントがサーバーにリクエストしようとしている正確な URL。
于 2020-10-18T04:59:25.020 に答える