【发布时间】:2010-11-08 01:42:27
【问题描述】:
我已经成功地为普通的 MEDIA 文件提供媒体文件,但是当我尝试提供管理媒体文件时,我失败了。请帮我找出问题所在,因为我已经尝试解决问题几个小时但没有运气(也一直在谷歌搜索并阅读了关于提供静态文件的 django 文档)。
我尝试访问 localhost:8000/media/a.gif 的错误如下:
找不到页面: f:\python25\lib\site-packages\django/contrib/admin/media\a.gif
我将管理媒体文件放在名为“media”的目录中,而将普通媒体文件放在名为“static”的目录中。我也在 Windows 上。
这是我在 urls.py 中提供普通媒体文件的方式:
# serve static files
from django.conf import settings
if settings.ENVIRONMENT==settings.ENV_DEVELOPMENT:
urlpatterns += patterns("django.views",
url(r"%s(?P<path>.*)$" % settings.MEDIA_URL[1:], "static.serve", {"document_root": settings.MEDIA_ROOT,})
)
还有我的 settings.py(仅重要部分):
import project_path
MEDIA_ROOT = project_path.MEDIA.replace('\\','/')
MEDIA_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/media/'
TEMPLATE_DIRS = (
project_path.TEMPLATE.replace('\\','/'),
)
还有我的 project_path.py:
import sys
from os.path import dirname, join
ROOT = dirname(__file__)
APP = join(ROOT, "apps")
TEMPLATE = join(ROOT, "templates")
MEDIA = join(ROOT, "static")
ADMIN_MEDIA = join(ROOT, "media")
有什么提示吗?
或者至少请分享您如何提供您的管理媒体文件(不更改来自网络服务器的任何文件,但只能通过 django 源代码)
提前致谢:)
【问题讨论】:
-
你解决过这个问题吗?我在使用 Django 1.1 的 Mac 上工作时也有类似的经历,提供正常的媒体文件工作但不适用于管理员......
-
url 设置不起作用的原因是
django/core/management/commands/runserver.py和django.core.servers.basehttp为ADMIN_MEDIA_PREFIX设置了一个WSGI 处理程序。它在 URLconf 被命中之前处理请求
标签: django routing path media admin