質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3071閲覧

DjangoでstaticなjsファイルのMIMEタイプがtext/plainになるのでapplication/javascriptに直したい

otftrough

総合スコア477

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/14 08:08

編集2020/08/16 02:25

Djangoで、テンプレートhtmlファイルに{% load static %}してstaticフォルダに置いたjsファイルを
<script src="{% static 'js/scripts.js' %}"></script>で読み込ませてますが、Chromeの開発者ウィンドウのネットワークタブでこのjsファイルを確認すると、Content-Type: text/plain になってました。
staticファイルのMIMEタイプを変更する方法はありますか?

Python 3.8.5
Django 3.0.5

--追記
dameoさんのコード動かして見ましたら、たしかにapplication/javascriptになっていました。
私のアプリケーションでは、staticファイルは下記サイトを参考に設定してあります。
Managing static files (e.g. images, JavaScript, CSS) | Django documentation | Django
settings.pyには、

python

1STATIC_URL = '/static/' 2 3STATICFILES_DIRS = ([ 4 os.path.join(BASE_DIR, "static") 5])

のように書いてあり、staticフォルダはmanage.pyと同じ階層に置いてあります。

お手数をおかけしますが、このサンプルがどのようにstaticファイルの設定をしているのか教えていただけませんでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/15 23:13

# Pythonのバージョンは3.7.5ですが、こちらの環境では再現しませんでした。 # 以下にUnix環境でこちらの環境を再現するスクリプトを書いたので、同じ環境での確認をお願いします。 # ■使い方 # 1. 空のディレクトリに移動するして # 2. このコメントをコピーして端末に貼り付ける # →空のディレクトリに2つのファイルが出来る # 3. source create_env.sh sed 's/^\xc2\xa0/ /;s/$/$/g;s/`/`/g;s/ /\x20\x20/g' <<__END_OF_TERMINAL_CODE__ >create_env.sh PYTHONCOMMAND="python3" if ! command -v python3; then   PYTHONCOMMAND="python" fi $PYTHONCOMMAND -m venv env . env/bin/activate pip install --upgrade pip pip install django==3.0.5 django-admin startproject mysite cd mysite django-admin startapp myapp patch -p1 <../diff.patch __END_OF_TERMINAL_CODE__ sed 's/^\xc2\xa0/ /;s/$/$/g;s/`/`/g;s/ /\x20\x20/g' <<__END_OF_TERMINAL_CODE__ >diff.patch diff --git a/myapp/static/myapp/hoge.js b/myapp/static/myapp/hoge.js new file mode 100644 index 0000000..045e4f7 --- /dev/null +++ b/myapp/static/myapp/hoge.js @@ -0,0 +1 @@ +console.log('hoge'); diff --git a/myapp/templates/myapp/index.html b/myapp/templates/myapp/index.html new file mode 100644 index 0000000..2a7d213 --- /dev/null +++ b/myapp/templates/myapp/index.html @@ -0,0 +1,8 @@ +{% load static %} +<html lang="ja"> +<head> +  <script src="{% static 'myapp/hoge.js' %}"></script> +</head> +<body> +<div>hello, world!</div> +</body> diff --git a/myapp/urls.py b/myapp/urls.py new file mode 100644 index 0000000..4509fb0 --- /dev/null +++ b/myapp/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +  +from . import views + +urlpatterns = [ +  path('', views.index, name='index'), +] diff --git a/myapp/views.py b/myapp/views.py index 91ea44a..9674e7f 100644 --- a/myapp/views.py +++ b/myapp/views.py @@ -1,3 +1,5 @@  from django.shortcuts import render   -# Create your views here. +def index(request): +  return render(request, 'myapp/index.html') + diff --git a/mysite/settings.py b/mysite/settings.py index 0a9c741..8602626 100644 --- a/mysite/settings.py +++ b/mysite/settings.py @@ -31,6 +31,7 @@ ALLOWED_HOSTS = []  # Application definition    INSTALLED_APPS = [ +  'myapp.apps.MyappConfig',    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes', @@ -103,9 +104,9 @@ AUTH_PASSWORD_VALIDATORS = [  # Internationalization  # https://docs.djangoproject.com/en/3.0/topics/i18n/   -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = 'ja-jp'   -TIME_ZONE = 'UTC' +TIME_ZONE = 'Asia/Tokyo'    USE_I18N = True   diff --git a/mysite/urls.py b/mysite/urls.py index 8a95eac..4aace67 100644 --- a/mysite/urls.py +++ b/mysite/urls.py @@ -14,8 +14,9 @@ Including another URLconf    2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))  """  from django.contrib import admin -from django.urls import path +from django.urls import path, include    urlpatterns = [ +  path('myapp/', include('myapp.urls')),    path('admin/', admin.site.urls),  ] __END_OF_TERMINAL_CODE__
退会済みユーザー

退会済みユーザー

2020/08/16 02:44

何が疑問なのかよく分かりませんが、実行して確認したということは設定ファイル自体もあるはずで、デフォルトから変更された部分もpatchの形で付いてると思うのですが... 静的ファイルの設定についてはデフォルトから変更していません。 mysite/settings.pyの STATIC_URL = '/static/' だけです。
退会済みユーザー

退会済みユーザー

2020/08/16 02:58 編集

私もmysite/settings.pyに STATICFILES_DIRS = ([ os.path.join(BASE_DIR, "static") ]) を追加し、manage.pyのあるディレクトリにstaticディレクトリを作成し、そこに console.log('hoge2'); とだけ書いたhoge2.jsを配置し、myapp/templates/myapp/index.htmlに <script src="{% static 'hoge2.js' %}"></script> 追記して確認してみましたが、正常にコンソールにログが出力され、hoge2.jsもapplication/javascriptでした。 再現しないことには状況把握が難しいので、再現できるサンプルが欲しいです。
退会済みユーザー

退会済みユーザー

2020/08/16 03:10

あと、私実行はpython manage.py runserverですが、そちらはどう実行していますか?
otftrough

2020/08/16 03:59

こちらはUbuntuでpython3 manage.py runserver で実行しています。 再現できるよう試してみます。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2020/08/16 04:14

WSGIとかで実行してて静的ファイルはWeb鯖が直接というわけでもなさそうですね... となるとMIMEの設定を自分で設定してるとか、実は動的に自分で送ってて、そのときにContent-Typeを設定してないとか、そういうのしか思いつかないです。 こちらではもう打つ手がないのですが、こちらのサンプルコードがそちらで現象発生しないのであれば、設定関連のdiffでも取れば違いが分かるかと思うのですが…settings.pyとかでdiff取って気になる部分とかありませんか? なお、こちらもUbuntuですが19.10で、この現象はPythonのバージョン関係なさそうだったのでUbuntuのPythonをそのまま使ってます(3.7.5)。気になるならpyenvで3.8.5に合わせることは可能です。嵩張るのであんまり入れたくないですが…
guest

回答1

0

ベストアンサー

今更の回答ですが…
DEBUG=True時のMIMEタイプ設定はsetting.pyに追加文を書き込むことで解決するようです

python

1if DEBUG: 2 import mimetypes 3 mimetypes.add_type("image/png", ".png", True)

参考URL(stack overflowのまんまコピペです)
Django development server and MIME types

デプロイ時は各自サーバーで設定でokです

投稿2022/09/06 11:14

rykss

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問