【发布时间】:2018-07-30 17:28:47
【问题描述】:
我刚刚将我的项目投入生产。我有一个功能,用户可以上传自己的个人资料图片。人们可以上传他们的图片,它甚至存储在正确的目录中。然而,当我尝试实现它时,我得到一个 404 not found 错误。我正在使用 Pythonanywhere,所有图片都存储在路径:
主页/[用户名]/[项目名称]/media/profile_picture
以下是相关代码sn-ps:
settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
models.py
class Person(models.model):
...
profile_picture = models.ImageField(upload_to="profile_picture", blank=True, null=True)
...
profile_page.html
...
<div class="photo-container">
{% if profile.profile_picture %}
<img src="{{ profile.profile_picture.url }}">
{% else %}
<img src="{% static 'external_page/assets/img/placeholder.png' %}">
{% endif %}
</div>
...
当我隔离标签时:
{{ profile.profile_picture.url }}
我明白了:
/media/profile_picture/[name_of_image_file].jpg
更新:
我怀疑错误在于文件的提供,而不是我引用它的路径。我怀疑因为我也得到了 404 not found
我明确尝试访问媒体字段的 url (https://www.website.com/media/profile_picture/[name_of_image_file.jpg]),
虽然我能够访问相应的静态文件。 (https://www.website.com/media/assets/[some_asset])
虽然,这是 python manage.py collectstatic 的结果
【问题讨论】:
-
请添加呈现 profile_page.html 的视图,以获取有关您在配置文件中呈现的内容的更多信息。
-
转到管理仪表板,尝试在那里添加图片,并注意更改。只需单击图片路径即可查看图片的真实路径。 (在管理仪表板中执行所有操作)并告诉我们
-
你在生产中使用 nginx 吗?
-
在管理仪表板上添加图像会产生相同的负面结果。
-
是的,使用了nginx。
标签: django image media pythonanywhere