django - 找不到 Django 媒体文件
问题描述
没有获取媒体文件。与用户模型相关的字段正在工作(例如 object.username、object.email),但 ProfileImage 的字段不工作。
网址.py
添加了以下代码。
from django.conf.urls.static import static
from django.conf import settings
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
设置.py
配置如下。
STATIC_URL = '/static/'
STATICFILES_ROOT = os.path.join(BASE_DIR,'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
profile_detail.html
这些是html代码。
{% 扩展 'base.html' %}
{% block main %}
{{object.email}}
{{request.user}}
<img src="{{object.profileimage.image.url}}">
{% endblock %}
模型.py
该模型与具有 OneToOne 关系的 User 模型相连。
def get_profile_upload_to(instance,filename):
new_filename = '{}.{}'.format(uuid4,filename.split('.')[-1])
return "profile/{}/{}".format(instance.user.id, new_filename)
class ProfileImage(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
image = models.ImageField(upload_to=get_profile_upload_to)
uploaded = models.DateTimeField(auto_now_add=True)
视图.py
与视图相关的代码。
class ProfileDetailView(DetailView):
model = User
template_name = 'user/profile_detail.html'
控制台的错误代码
Not Found: /media/profile/1/function_uuid4_at_0x7fbf37ce42f0.jpeg
[18/Oct/2019 10:01:45] "GET /media/profile/1/function_uuid4_at_0x7fbf37ce42f0.jpeg HTTP/1.1" 404 3421
解决方案
我在 apps/urls.py 中添加了下面的 urlpatterns 而不是主要的 urls.py 这就是它能够将图像呈现为模板的原因。
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
推荐阅读
- vbscript - vbscript GPO 权限 - 将组设置为拒绝“应用组策略”
- php - 从php向msql插入值
- sql - Google Cloud SQL 代理找不到云 SQL 实例
- linux - 如何将 linux 命令保存在一个变量中,以便在 shell 脚本的后面部分使用
- mysql - MySQL从多个子行查询相关实体到json数组中
- swift - 我的 sender.tag 返回 nil
- javascript - 清除日期时间选择器字段。引导程序 3
- javascript - 使用不透明度滑块修改动画 CSS 背景图像?
- java - 尝试构建警报对话框的空指针异常
- amazon-web-services - 如何使用 AWS AMI 管理机器学习中的海量数据