我已经使用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'
图片存在于该文件夹中,但不会出现在网站上。
我真的无法弄清楚为什么它不起作用。任何帮助表示赞赏。
答案 0 :(得分:1)
您不应使用
urlpatterns + =静态(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)
为此。仅用于调试目的是可以的。否则,应该由您的nginx / apache / other_server负责提供静态文件和媒体文件以及路由gunicorn / uwsgi生成的.sock文件。
答案 1 :(得分:0)
我终于想出了如何让它发挥作用,所以如果其他人遇到同样的问题,我将回答我的问题。基本上只需将其添加到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)