Django 显示 ImageField
Django show ImageField
我已经使用 OneToOne 方法从 Django 扩展了基本用户。
class Employee(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE)
floor = models.CharField(max_length = 100)
avatar = models.ImageField(upload_to='userimages')
图片已上传至media/userimages。
现在,当我尝试显示头像时,我正在尝试这种方式,但它没有显示任何内容。
<img src="media/{{ user.employee.avatar.url }}" alt="">
如果我只输出user.employee.avatar.url,我得到:
'media/userimages/name.jpg'
图像存在于该文件夹中,但未出现在网站上。
我真的想不通为什么它不起作用。感谢任何帮助。
我终于想出了如何让它发挥作用,所以为了以防万一其他人遇到同样的问题,我将回答我的问题。基本上只需将其添加到 settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'app/media')
这对 urls.py:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
你不应该使用
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
做到这一点。这仅用于调试目的。否则,您的 nginx/apache/other_server 应该负责提供静态文件和媒体文件以及路由由 gunicorn/uwsgi 生成的 .sock 文件。
我已经使用 OneToOne 方法从 Django 扩展了基本用户。
class Employee(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE)
floor = models.CharField(max_length = 100)
avatar = models.ImageField(upload_to='userimages')
图片已上传至media/userimages。
现在,当我尝试显示头像时,我正在尝试这种方式,但它没有显示任何内容。
<img src="media/{{ user.employee.avatar.url }}" alt="">
如果我只输出user.employee.avatar.url,我得到:
'media/userimages/name.jpg'
图像存在于该文件夹中,但未出现在网站上。
我真的想不通为什么它不起作用。感谢任何帮助。
我终于想出了如何让它发挥作用,所以为了以防万一其他人遇到同样的问题,我将回答我的问题。基本上只需将其添加到 settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'app/media')
这对 urls.py:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
你不应该使用
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
做到这一点。这仅用于调试目的。否则,您的 nginx/apache/other_server 应该负责提供静态文件和媒体文件以及路由由 gunicorn/uwsgi 生成的 .sock 文件。