所以,我創建在Django一個新的應用程序通過python manage.py startapp foo
新的Django應用程序MEDIA_URL徑處理不正確
我的新的應用程序將不會加載任何文件在/site_media/
目錄,通過{{ MEDIA_URL }}
。他們正試圖從App的目錄中找到路徑,而不是/site_media/
目錄。
實施例: 相反從
http://sitename/site_media/bootstrap/bootstrap.min.css
它試圖加載到從http://sitename/foo/bootstrap/bootstrap.min.css
這裏載荷從settings.py
片段限定MEDIA_URL
MEDIA_URL = '/site_media/'
我可以強制在應用程序中正確加載文件,在base.html
和我的show_foo.html
中用/site_media/
代替{{ MEDIA_URL }}
,但是這會打破網站其他部分的路徑。
我不確定還有什麼人希望看到嘗試和診斷問題,但我很難過!在我的應用程序目錄
#!/usr/bin/python
# -*- coding: UTF8 -*-
from django.conf.urls.defaults import *
urlpatterns = patterns('foo_web.foo_track.views',
url('^$','view_foo_track',name='foo_home'),
url('^newentry/(?P<entry_id>\d+)$','write_form_data',name='foo_track_new'),
)
settings.py
編輯*爲便於閱讀,刪除評論
import os
current_dir = os.path.abspath(os.path.dirname(__file__))
from os import sys, path
sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))
import run_server
cherry_config,django_config = run_server.get_web_server_parameters()
DEBUG = django_config['DEBUG']
TEMPLATE_DEBUG = django_config['TEMPLATE_DEBUG']
CACHE_MODE = django_config['CACHE_MODE']
DB = django_config['DB']
HOST = django_config['HOST']
LOGIN_URL = '/'
LOGOUT_URL = '/'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '%s' % DB,
'USER': 'postgres',
'PASSWORD': '*****',
'HOST': '%s' % HOST,
'PORT': '5432',
}
}
CACHES = {
'default': {
'BACKEND': CACHE_MODE,
'LOCATION': 'my_cache_table',
'TIMEOUT': 1800,
'OPTIONS': {
'MAX_ENTRIES': 10000
}
}
}
ADMINS = (
('**', '**'),
)
MANAGERS = ADMINS
#~ EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = '**'
SERVER_EMAIL = '**'
EMAIL_USE_TLS = True
EMAIL_HOST = "**"
EMAIL_HOST_USER = "**"
EMAIL_HOST_PASSWORD = "**"
TIME_ZONE = 'America/Chicago'
LANGUAGE_CODE = 'en-us'
#~ gettext = lambda s: s
#~ LANGUAGES = (
#~ ('de', gettext('German')),
#~ ('en', gettext('English')),
#~)
SITE_ID = 1
USE_I18N = True
USE_L10N = True
USE_TZ = True
MEDIA_ROOT = current_dir + '/media/'
MEDIA_URL = '/site_media/'
STATIC_ROOT = current_dir + '/media/static/'
STATIC_URL = '/site_static/'
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
SECRET_KEY = '***'
if DEBUG:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
else:
TEMPLATE_LOADERS = (
('django.template.loaders.cached.Loader', (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)),
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'sensei_web.middleware.FilterPersistMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
#~ 'sensei_web.middleware.ProfileMiddleware'
#~ 'django.middleware.cache.UpdateCacheMiddleware',
#~ 'django.middleware.common.CommonMiddleware',
#~ 'django.middleware.cache.FetchFromCacheMiddleware',
)
ROOT_URLCONF = 'sensei_web.urls'
WSGI_APPLICATION = 'sensei_web.wsgi.application'
TEMPLATE_DIRS = (
current_dir + '/templates',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'foo.foo',
'foo.foo',
#~ 'foo.foo',
'foo.foo',
'foo.foo',
'foo',
'foo.foo',
'foo.foo_track',
)
ACCOUNT_ACTIVATION_DAYS = 7
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
在你的'TEMPLATE_CONTEXT_PROCESSORS'設置中有'django.core.context_processors.media'嗎? – shuttle87 2014-10-17 17:24:19
嗯。我沒有'TEMPLATE_CONTEXT_PROCESSORS',並懇求無知,因爲我根本沒有配置網站。最後,「責備」我的同事,大聲笑。所以我應該添加這裏列出的塊([https://docs.djangoproject.com/en/1.4/ref/settings/#std:setting-TEMPLATE_CONTEXT_PROCESSORS]),並應該得到一些建設性的錯誤信息? – 2014-10-17 17:30:33
@ shuttle87我試着添加你所說的塊和nada。 – 2014-10-17 18:07:19