Adr*_*iem 18 media django routing admin path
我已成功为普通的MEDIA文件提供媒体文件,但当我尝试提供管理媒体文件时,我失败了.请帮助我找到问题所在,因为我已经尝试解决问题好几个小时已经没有运气了(谷歌搜索也读了django doc关于提供静态文件).
我尝试访问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,})
)
Run Code Online (Sandbox Code Playgroud)
还有我的settings.py(只有重要部分):
import project_path
MEDIA_ROOT = project_path.MEDIA.replace('\\','/')
MEDIA_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/media/'
TEMPLATE_DIRS = (
project_path.TEMPLATE.replace('\\','/'),
)
Run Code Online (Sandbox Code Playgroud)
我的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")
Run Code Online (Sandbox Code Playgroud)
任何提示?
或者至少请分享您如何提供管理媒体文件(不更改来自Web服务器的任何文件,但只能通过django源代码)
提前致谢 :)
pho*_*oku 32
您的答案是,除非ADMIN_MEDIA_PREFIX显式设置域,否则runserver命令将提供contrib.admin中的管理媒体文件.
我也被这种神奇的行为所灼伤.有一张这样的票(票号#8336),但设计决定是留下方便和混乱的原样.
因此,要使用runserver您必须使用以下命令的命令来管理您的管理媒体(使用grappelli或您想要使用的任何管理皮肤)
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media/')
ADMIN_MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'admin-media/')
MEDIA_URL = '/site-media/'
ADMIN_MEDIA_PREFIX = 'http:/localhost:8000/admin-media/'
Run Code Online (Sandbox Code Playgroud)
我希望我在这里复活正确的问题.提前道歉.
尝试改变:
ADMIN_MEDIA_PREFIX = '/static/media/'
这假设您的 MEDIA_ROOT/media/ 目录包含管理媒体文件夹(这是我从您的问题中了解到的)。
| 归档时间: |
|
| 查看次数: |
24023 次 |
| 最近记录: |