質問

画像を使用する Django アプリケーションをセットアップしました。メディア設定MEDIA_ROOTおよびMEDIA_URLを正しくセットアップしたと思います。ただし、画像は表示されません。何が問題になるか知っていますか?

この例を考えてみましょう:

画像ファイルは / home / www / media / app / photos の下にあり、 http://example.com/photos/123.jpg

これらの設定を使用する必要がありますか

MEDIA\_ROOT = /home/www/media

MEDIA_URL = http://example.com/app

更新:組み込みの開発サーバーを使用していることを忘れていました。

役に立ちましたか?

解決

Djangoから静的コンテンツを提供することは、開発者自身から排除されます(私が間違っていなければ、デバッグモードでのみ機能します)。代わりに、専用のWebサーバーを使用する必要があります。

とにかく本当に必要な場合は、 howのドキュメントを読んでください静的ファイルを提供する

他のヒント

開発専用

urls.py ファイルでこれを行うことで、開発サーバーで使用する静的メディアサーバーをセットアップできます。使用方法を示すコードを(強制DEBUG条件とともに)添付しました。

from django.conf import settings
from django.conf.urls.defaults import *      

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('', 
    (r'^

MEDIA_ROOT をhtml / mediaのサブディレクトリに配置し、 settings.py

でそのようにリンクします
MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'html/media/').replace('\\','/')

開発が完了すると、プロジェクトはWebサーバーにデプロイされ、そこで静的メディアファイルが Apacheによって提供されます。 ディレクティブを使用します。

, 'views.index'), # Accounts (r'^accounts/login/

MEDIA_ROOT をhtml / mediaのサブディレクトリに配置し、 settings.py

でそのようにリンクします <*>

開発が完了すると、プロジェクトはWebサーバーにデプロイされ、そこで静的メディアファイルが Apacheによって提供されます。 ディレクティブを使用します。

, 'views.user_login'), (r'^accounts/logout/

MEDIA_ROOT をhtml / mediaのサブディレクトリに配置し、 settings.py

でそのようにリンクします <*>

開発が完了すると、プロジェクトはWebサーバーにデプロイされ、そこで静的メディアファイルが Apacheによって提供されます。 ディレクティブを使用します。

, 'views.user_logout'), # Contrib Modules (r'^admin/(.*)', admin.site.root), ) if settings.DEBUG : urlpatterns += patterns('', (r'^media/(?P<path>.*)

MEDIA_ROOT をhtml / mediaのサブディレクトリに配置し、 settings.py

でそのようにリンクします <*>

開発が完了すると、プロジェクトはWebサーバーにデプロイされ、そこで静的メディアファイルが Apacheによって提供されます。 ディレクティブを使用します。

, 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), )

MEDIA_ROOT をhtml / mediaのサブディレクトリに配置し、 settings.py

でそのようにリンクします <*>

開発が完了すると、プロジェクトはWebサーバーにデプロイされ、そこで静的メディアファイルが Apacheによって提供されます。 ディレクティブを使用します。

これは、ImageFieldで画像ファイルを表示する正しい方法です。ユーザープロフィール画像があるとします:

models.py:

UserProfile:
    profilePic= models.ImageField( upload_to='PATH_TO_UPLOAD', blank=True, null=True)

settings.py:

MEDIA_ROOT = 'FULL_PATH_OF_MEDIA'
MEDIA_URL = 'URL_OF_MEDIA'

urls.py:

urlpatterns = [
.
.
.
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

PATH_TO_UPLOADは、ユーザーアップロードデータが移動するパスです。これはFULL_PATH_OF_MEDIAのサブディレクトリです。つまり、アップロードされたファイルには

が含まれます。
FULL_PATH_OF_MEDIA/PATH_TO_UPLOAD 

フルパス。このコンテンツには次のURLからアクセスできます。

SITE_NAME/URL_OF_MEDIA/PATH_TO_UPLOAD

static_files vs media_filesでこれを読むこともお勧めします。

doc

Django 404ページを取得していると思われます。画像の1つに直接アクセスして、それが起こっているかどうかを確認してください。

その場合、Webサーバーを設定して、メディア階層内のリクエストをDjangoに送信しない 代わりに、直接リクエストを処理する必要があります。これは、Apache confファイルからの抜粋です。最初のセクションは、すべてをDjangoに送信するようApacheに指示します。 2番目のセクションには、「SetHandler None」があります。これは、「/ mediaの下にあるものを通常の方法で処理する」と書かれています。

http://docs.djangoproject.com/en/devを参照してください。 / howto / deployment / modpython / にすべてのエキサイティングな詳細が記載されています。

PrinceOfPinot.comの部分的なhttpd.confファイル(ポップ):

<Location "/">
    SetHandler python-program
    PythonAutoReload Off
    PythonDebug Off
    PythonPath "['/var/www/production/pop', '/usr/local/lib/python2.5/site-packages/django'] + sys.path"
    SetEnv DJANGO_SETTINGS_MODULE settings
    PythonHandler django.core.handlers.modpython
</Location>

<Location "/media">
    SetHandler None
    AddOutputFilterByType DEFLATE text/html text/css application/x-javascript
</Location>

元の質問は開発サーバーに関するものであることは承知していますが、本番環境を探している他の人には答えてください:

https://docs.djangoproject.com/en/1.8 / howto / static-files / deployment / は、実稼働環境でdjangoがファイルを提供する方法に関するガイドを提供します。ガイドの調子から、ファイルを処理するために別個のWebサーバーを用意するか、Apacheでmod_wsgiを使用することが最善であることを暗示しているように見えます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top