Djangoで画像をアップロード/表示しています。
WebサイトはHerokuにデプロイされています。
次の this チュートリアル画像を正常にアップロードすることができました。
ただし、画像はテンプレートに表示されていませんでした。
次に、私のurls.pyの最後に次の行が必要であることを学びました。
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
これを私のurls.pyの最後に追加しましたが、次のエラーが発生します。
ImproperlyConfigured at / Empty static prefix not permitted
私のsettings.pyにMEDIA_URLとMEDIA_ROOTがあり、どちらも空ではありません。
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = '/media/'
このエラーが発生するのはなぜですか、どうすれば修正できますか?
これが私のurls.pyの関連部分だと思います:
from Django.contrib import admin
from Django.conf import settings
from Django.conf.urls.static import static
import notifications
admin.autodiscover()
urlpatterns = patterns('',
....urls......
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
私は私のurls.pyに同じ行を追加し、あなたと同じエラーが発生しました。
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
ドキュメント ここ はsettings.STATIC_URL
とsettings.STATIC_ROOT
を使用するように言っています
ドキュメント版に変更しました
urlpatterns = patterns('',
....urls......
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
そしてエラーは消えました!
設定ファイルをチェックして、settings.MEDIA_URL
とsettings.MEDIA_ROOT
の両方が正しく定義されていることを確認しました。後でurls.pyを調整して、settings.MEDIA_URL
およびsettings.MEDIA_ROOT
を使用するように戻しました。すべてが期待どおりに機能しました。
これらは私のsettings.pyファイルの関連部分です:
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
REPOSITORY_ROOT = os.path.dirname(BASE_DIR)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(REPOSITORY_ROOT, 'static/')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(REPOSITORY_ROOT, 'media/')
MEDIA_URL
が正しく設定されていないと思います
MEDIA_URLとMEDIA_ROOTの両方、および静的ファイルSTATIC_ROOT STATIC_URLが正しく定義されているかどうかも確認してください。
正しいスペルも確認してください:)
それらの1つが正しく設定されていないと、このエラーが発生します。
この問題が発生した場合に備えて、MEDIA_URLとMEDIA_ROOTの両方が設定されていることを確認してください。
エラーが発生しました
ImproperlyConfigured at / Empty static prefix not permitted
Django 1.11でMEDIA_ROOTのみを設定した場合
または、DjangoプロジェクトWikiは、デバッグモードではURLを参照できないとしています: https://docs.djangoproject.com/en/1.11/howto/static-files/ #serving-files-uploaded-by-a-user-during-development
この問題を解決するには、次のステートメントをsettings.pyファイルに追加する必要があります。
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
Settings.pyに以下が含まれていることを確認してください:
# Media
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
次に、urls.pyで、これを試してください
urlpatterns[
...
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
私は Django 2.2&Python | The Ultimate Web Development Bootcamp に従っています。私の問題は、これらをポートフォリオプロジェクト/ポートフォリオ/設定.py /に宣言するのを忘れていたことです。下部に:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/Media/'
このエラーを修正するには、STATIC_ROOT
およびSTATIC_URL
の上に STATICFILES_DIRS
宣言。
Django 2.1を使用しているときに最近同じエラーが発生しました。2.1問題は、明示的に指定しなかったMEDIA_URL = '/media/'
プロジェクト設定ファイル内。同じことを宣言したら、エラーはなくなりました。