2012-05-02 10 views
5

settings.pyジャンゴ:MEDIA_URLが見つかりませんページを返す

# -*- coding: utf-8 -*- 
# Django settings for basic pinax project. 

import os.path 
import posixpath 

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

# tells Pinax to serve media through the staticfiles app. 
SERVE_MEDIA = DEBUG 

# django-compressor is turned off by default due to deployment overhead for 
# most users. See <URL> for more information 
COMPRESS = False 

INTERNAL_IPS = [ 
    "127.0.0.1", 
] 

ADMINS = [ 
    # ("Your Name", "[email protected]"), 
] 

MANAGERS = ADMINS 

DATABASES = { 
    "default": { 
     "ENGINE": "django.db.backends.sqlite3", # Add "postgresql_psycopg2", "postgresql", "mysql", "sqlite3" or "oracle". 
     "NAME": "dev.db",      # Or path to database file if using sqlite3. 
     "USER": "",        # Not used with sqlite3. 
     "PASSWORD": "",       # Not used with sqlite3. 
     "HOST": "",        # Set to empty string for localhost. Not used with sqlite3. 
     "PORT": "",        # Set to empty string for default. Not used with sqlite3. 
    } 
} 

# Local time zone for this installation. Choices can be found here: 
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name 
# although not all choices may be available on all operating systems. 
# If running in a Windows environment this must be set to the same as your 
# system time zone. 
TIME_ZONE = "US/Eastern" 

# Language code for this installation. All choices can be found here: 
# http://www.i18nguy.com/unicode/language-identifiers.html 
LANGUAGE_CODE = "en-us" 

SITE_ID = 1 

# If you set this to False, Django will make some optimizations so as not 
# to load the internationalization machinery. 
USE_I18N = True 

# Absolute path to the directory that holds media. 
# Example: "/home/media/media.lawrence.com/" 
MEDIA_ROOT = os.path.join(PROJECT_ROOT, "static") 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com", "http://example.com/media/" 
MEDIA_URL = "/site_media/media/" 

# Absolute path to the directory that holds static files like app media. 
# Example: "/home/media/media.lawrence.com/apps/" 
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static") 

# URL that handles the static files like app media. 
# Example: "http://media.lawrence.com" 
STATIC_URL = "/site_media/static/" 

# Additional directories which hold static files 
STATICFILES_DIRS = [ 
    os.path.join(PROJECT_ROOT, "static"), 
    os.path.join(PROJECT_ROOT, "media"), 
] 

STATICFILES_FINDERS = [ 
    "staticfiles.finders.FileSystemFinder", 
    "staticfiles.finders.AppDirectoriesFinder", 
    "staticfiles.finders.LegacyAppDirectoriesFinder", 
    "compressor.finders.CompressorFinder", 
] 

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a 
# trailing slash. 
# Examples: "http://foo.com/media/", "/media/". 
ADMIN_MEDIA_PREFIX = posixpath.join(STATIC_URL, "admin/") 

# Subdirectory of COMPRESS_ROOT to store the cached media files in 
COMPRESS_OUTPUT_DIR = "cache" 

# Make this unique, and don't share it with anybody. 
SECRET_KEY = "HIDDEN" 

# List of callables that know how to import templates from various sources. 
TEMPLATE_LOADERS = [ 
    "django.template.loaders.filesystem.load_template_source", 
    "django.template.loaders.app_directories.load_template_source", 
] 

MIDDLEWARE_CLASSES = [ 
    "django.middleware.common.CommonMiddleware", 
    "django.contrib.sessions.middleware.SessionMiddleware", 
    "django.middleware.csrf.CsrfViewMiddleware", 
    "django.contrib.auth.middleware.AuthenticationMiddleware", 
    "django_openid.consumer.SessionConsumer", 
    "django.contrib.messages.middleware.MessageMiddleware", 
    "pinax.apps.account.middleware.LocaleMiddleware", 
    "pagination.middleware.PaginationMiddleware", 
    "pinax.middleware.security.HideSensistiveFieldsMiddleware", 
    "debug_toolbar.middleware.DebugToolbarMiddleware", 
] 

ROOT_URLCONF = "ezstyler.urls" 

TEMPLATE_DIRS = [ 
    os.path.join(PROJECT_ROOT, "templates"), 
] 

TEMPLATE_CONTEXT_PROCESSORS = [ 
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.debug", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.media", 
    "django.core.context_processors.request", 
    "django.contrib.messages.context_processors.messages", 

    "staticfiles.context_processors.static", 

    "pinax.core.context_processors.pinax_settings", 

    "pinax.apps.account.context_processors.account", 

    "notification.context_processors.notification", 
    "announcements.context_processors.site_wide_announcements", 
] 

INSTALLED_APPS = [ 
    # Django 
    "django.contrib.admin", 
    "django.contrib.auth", 
    "django.contrib.contenttypes", 
    "django.contrib.sessions", 
    "django.contrib.sites", 
    "django.contrib.messages", 
    "django.contrib.humanize", 

    "pinax.templatetags", 

    # theme 
    "pinax_theme_foundation", 

    # external 
    "notification", # must be first 
    "staticfiles", 
    "compressor", 
    "debug_toolbar", 
    "mailer", 
    "django_openid", 
    "timezones", 
    "emailconfirmation", 
    "announcements", 
    "pagination", 
    "idios", 
    "metron", 

    # Pinax 
    "pinax.apps.account", 
    "pinax.apps.signup_codes", 

    # project 
    "about", 
    "profiles", 
    "outfits", 
] 

FIXTURE_DIRS = [ 
    os.path.join(PROJECT_ROOT, "fixtures"), 
] 

MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage" 

EMAIL_BACKEND = "mailer.backend.DbBackend" 

ABSOLUTE_URL_OVERRIDES = { 
    "auth.user": lambda o: "/profiles/profile/%s/" % o.username, 
} 

AUTH_PROFILE_MODULE = "profiles.Profile" 
NOTIFICATION_LANGUAGE_MODULE = "account.Account" 

ACCOUNT_OPEN_SIGNUP = True 
ACCOUNT_USE_OPENID = False 
ACCOUNT_REQUIRED_EMAIL = False 
ACCOUNT_EMAIL_VERIFICATION = False 
ACCOUNT_EMAIL_AUTHENTICATION = False 
ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False 

AUTHENTICATION_BACKENDS = [ 
    "pinax.apps.account.auth_backends.AuthenticationBackend", 
] 

LOGIN_URL = "/account/login/" # @@@ any way this can be a url name? 
LOGIN_REDIRECT_URLNAME = "what_next" 
LOGOUT_REDIRECT_URLNAME = "home" 

EMAIL_CONFIRMATION_DAYS = 2 
EMAIL_DEBUG = DEBUG 

DEBUG_TOOLBAR_CONFIG = { 
    "INTERCEPT_REDIRECTS": False, 
} 

# local_settings.py can be used to override environment-specific settings 
# like database and email that differ between development and production. 
try: 
    from local_settings import * 
except ImportError: 
    pass 

そしてurls.pyそれは場合に役立ちます:

私のテンプレート{{MEDIA_URL}} {{中のSO
from django.conf.urls.defaults import * 
from outfits.views import * 
import settings 

urlpatterns = patterns("", 
    # Outfits 
    url(r'^$', outfit_list, name='outfit_list'), 
    url(r'^new/$', outfit_create, name='outfit_create'), 
    url(r'^detail/(\d+)/$', outfit_detail, name='outfit_detail'), 
    url(r'^update/(\d+)/$', outfit_update, name='outfit_update'), 
    url(r'^delete/(\d+)/$', outfit_delete, name='outfit_delete'), 
    # Products 
    url(r'^detail/(\d+)/add/confirm/$', product_confirm, name='product_confirm'), 
    url(r'^outfit_displayImg/$', outfits_displayImg), 
    url(r'^detail/(\d+)/add/$', product_add, name='product_add'), 
    url(r'^detail/(\d+)/update/(\d+)$', product_update, name='product_update'), 
    url(r'^detail/(\d+)/delete/(\d+)$', product_delete, name='product_delete'), 
) 

if settings.DEBUG: 
    urlpatterns += patterns('', 
     url(r'^site_media/media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 
) 

p.images}}は適切なURLを返しますhttp://127.0.0.1:8000/site_media/media/products/co_macysLogo3.gifしかし、私がそれを開くとページが見つかりません

ファイルがあるので、なぜ私が不平を言うのか分かりません。私は3つか4つの他の質問を見ましたが、それは私のものに似ていますが、彼らの答えのどれも私の問題を解決しませんでした。私の{{STATIC_URL}}はうまくいきますが、{{MEDIA_URL}}はうまくいきません。もし私ができればSTATIC_URLを使用して、私のアプリケーションを動作させるだけですが、残念ながらDjangoのImageField upload_toパラメータはイメージをメディアフォルダにアップロードするだけです。

UPDATE:MEDIA_ROOT = os.path.join(PROJECT_ROOT, "static")にMEDIA_ROOTを変更し、{{STATIC_URL}} {{p.images}}を経由して、私の画像を呼び出すには、問題を解決しました。私はもっ​​と良い方法があることを望む。私はまだDjangoがMEDIA_URLから画像ファイルを提供することができない理由を理解していません。

+0

あなたはDjangoの開発サーバ、またはnginxのようなものを使用していますか? – spinlok

+0

Django開発サーバー。どうして?それがHeroku、dotCloud、またはEC2上にあったかどうかは重要でしょうか?明日のように、最終的に展開されるでしょう。 –

+0

urls.pyマッピングを確認しましたか?私にビュー/ハンドラの欠けている問題のように聞こえる。 – techiev2

答えて

5

products/co_macysLogo3.gifを持っていなければならないことを意味する。このパスに存在します私のプロジェクトで私のために。
settings.py

MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'media') 
MEDIA_URL = '/site_media/media/' 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'static') 
SITE_MEDIA_URL = '/site_media/' 
STATIC_URL = '/site_media/' 
ADMIN_TOOLS_MEDIA_URL = '/site_media/' 
ADMIN_MEDIA_PREFIX = posixpath.join(STATIC_URL, "admin/") 
STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'site_media'),) 

urls.py

if settings.SERVE_MEDIA: 
    urlpatterns += patterns("", 
     (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
      {'document_root': settings.STATIC_ROOT, 'show_indexes': True }), 
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
      {'document_root': settings.STATIC_ROOT, }), 

モデル。あなたのurls.pyファイル内のテンプレート(簡体字)

<img src="{{object.image.url}}" > 
7

urls.py

(r'^site-media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes':True}), 

if settings.DEBUGの下に次の行を追加したり、MEDIA_URL = "/media/"

staticfilesを設定するには、メディアファイルの、あなたが明示的に提供するパスを指定する必要があり、静的ファイルを提供しています。

たとえばImageField(upload_to='product')のために、メディアファイルを保存するために、ファイルのバックエンドを使用して、ファイルの名前fooがMEDIA_ROOT/product/fooに作成されます更新。ページ内のファイルのURLはMEDIA_URL/product/fooです。開発サーバーでは、'MEDIA_URL/(?<path>.*)$'の要求を処理するために、product/fooのパスを持つurls.pyを設定する必要があります。

+0

申し訳ありませんでした。 –

+0

@BluePonyInc。 '^ site-media/media /(?P 。*)$ '' – okm

+0

を試してみてください。 –

0

urlパターンがMEDIA_URLと一致しません。あなたの設定のMEDIA_URLを "/ media /"に変更してあなたのURLの設定に合わせることができます。私は、これはその後真とオーケー

(r'^site-media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'media/your/path'}), 

だと思う

+0

私はしましたが、まだ何もありませんでした。 –

0

はあなたのファイルをチェック

は、あなたがどのような作品のだけで簡単に例のメディアパス

3

image = ImageField(upload_to='products/product_type', blank=True, null=True) 

PY、あなたがする必要があります。

from django.conf import settings 
from django.conf.urls.static import static 


if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
+0

こんにちは@Sumit、これは私のために働いた。どうもありがとう! – arcee123

関連する問題