gpt4 book ai didi

Django:提供 ADMIN 媒体文件

转载 作者:行者123 更新时间:2023-12-03 13:19:50 29 4
gpt4 key购买 nike

我已经成功地为普通媒体文件提供媒体文件,但是当我尝试提供管理媒体文件时,我失败了。请帮我找出问题所在,因为我已经尝试解决问题几个小时但没有运气(也一直在谷歌搜索并阅读有关提供静态文件的 django 文档)。

我尝试访问 localhost:8000/media/a.gif 的错误如下:

Page not found: 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 源代码)

提前致谢 :)

最佳答案

您的回答是,除非 ADMIN_MEDIA_PREFIX显式设置域
runserver 命令将从 contrib.admin 中提供管理媒体文件。

我也被这种神奇的行为烧伤了。有一张票( Ticket #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/'

我希望我在这里复活了正确的问题。提前道歉。

关于Django:提供 ADMIN 媒体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081596/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com