媒体文件上的 404 - Django
Posted
技术标签:
【中文标题】媒体文件上的 404 - Django【英文标题】:404 on media files - Django 【发布时间】:2016-12-05 14:30:43 【问题描述】:昨晚我将我的项目上传到 pythonanywhere.com,我想在那里测试我的生产设置。在我的一个模型中,我允许用户上传 JPG(团队徽标)。上传过程运行良好,文件位于我的 MEDIA_ROOT 中。问题是当我尝试在我的模板中访问它(以在页面上显示它)时,我得到一个 404。我的第一个想法是我的 MEDIA_URL 配置不正确,但我仍然不知道为什么。我想说我的媒体文件夹不在项目中 - 它在外面。 在 development 模式下,我看到了徽标(我已正确设置了 if settings.DEBUG: urlpattern += static(...) 选项)。
我正在使用 Django 1.9.7 和 python 2.7 这是我的代码:
我的模特:
class Team(models.Model):
name = models.CharField(verbose_name='Name of the team', max_length=24)
logo = models.ImageField(upload_to='team_logos', verbose_name='Logo', blank=True, null=True)
def get_logo(self):
u"""Get path to logo, if there is no logo then show default."""
if self.logo:
return self.logo.url
return '/static/img/default_team_logo.jpg'
我的设置.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media", "soccerV1", "static")
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "media", "static"),
)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media", "soccerV1", "media")
还有我需要徽标的模板:
<td><img src=" details.get_logo " ></td>
【问题讨论】:
您配置了什么来实际从 MEDIA_URL 提供文件? 【参考方案1】:您需要在 PythonAnywhere 的仪表板中设置媒体文件映射。来自他们的documentation:
转到 PythonAnywhere 仪表板上的 Web 选项卡 转到静态文件部分 在 url 部分输入与 MEDIA_URL 相同的 URL(在您的情况下为/media/
)
在path部分输入MEDIA_ROOT的路径(完整路径,包括/home/username/etc
)
然后点击重新加载,您上传的文件应该会正确提供。
【讨论】:
谢谢@rafalmp - 你真的拯救了我的一天 :) 我正在 pythonanywhere.com 帮助部分搜索类似的内容,但找不到。再次感谢! :)以上是关于媒体文件上的 404 - Django的主要内容,如果未能解决你的问题,请参考以下文章