刚升级到Django 1.4,在开发服务器上新增“改进”的静态和媒体文件服务时遇到了严重问题.我喜欢Django,但是为什么他们在使用STATIC_URL,STATIC_ROOT,STATICFILES_DIR使这些文件变得更复杂,现在完全超出了我的范围.
我只是尝试在开发服务器上提供静态和上传的所有文件.经过大量实验后,我的STATIC_URL文件正常工作,但我根本无法获得MEDIA_URL文件.
设置:
DIRNAME = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(DIRNAME, 'media/')
MEDIA_URL = '/media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
我添加了媒体和静态上下文处理器:
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.static',
"django.core.context_processors.request",
'satchmo_store.shop.context_processors.settings',
'django.contrib.messages.context_processors.messages',
)
我在网址中添加了:
# serve static and uploaded files in DEV
urlpatterns += staticfiles_urlpatterns()
urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
添加了两个conf设置,如文档中所示,第一个用于静态,第二个用于媒体.
我的结构,网站是一个应用程序和静态目录放在它内部按照djangoproject的指示:
<myproject>
--media
--settings
--templates
--website
|->static
在模板中我可以提供静态内容没问题
{{STATIC_URL}}css/style.css
但任何上传的图片,这个使用photologue,都没有提供,但网址是正确的:
/media/photologue/photos/cache/spawning-2_admin_thumbnail.jpg
该目录结构确实在media /下退出
超级,超级迷茫.现在这一切似乎都非常复杂,而我之前从未遇到过任何问题.
最佳答案 我是Django的新手,我从来没有对静态内容有任何问题.
这是我的配置.我希望它可以提供帮助
我的文件夹结构
django-project
--mainapp
----settings.py
----wsgi.py
----[...]
--otherapp
--fixtures
--static
--templates
--manage.py
--requirements.txt
settings.py
import os, socket
DEBUG = True
TEMPLATE_DEBUG = DEBUG
MAIN_APP = os.path.abspath(os.path.dirname(__file__))
PROJECT_ROOT = os.path.abspath(os.path.join(MAIN_APP, ".."))
MY_LOCALHOST = "VirusVault.local" # this is the real name of my local machine :)
try: HOST_NAME = socket.gethostname()
except: HOST_NAME = "localhost"
[…]
if HOST_NAME == MY_LOCALHOST:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static/')
STATIC_URL = "/static/"
MEDIA_ROOT = os.path.join(STATIC_ROOT, 'media/')
MEDIA_URL = "/media/"
else:
STATIC_ROOT = "/server/path/to/static/files"
STATIC_URL = "http://server.com/static/"
MEDIA_ROOT = "/server/path/to/static/files/media/"
MEDIA_URL = 'http://server.com/static/media/'
您需要将’django.contrib.staticfiles’添加到INSTALLED_APPS
urls.py
if settings.HOST_NAME == settings.MY_LOCALHOST:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
)