Django展示ImageField

时间:2018-02-28 17:24:32

标签: python django 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'

图片存在于该文件夹中,但不会出现在网站上。

我真的无法弄清楚为什么它不起作用。任何帮助表示赞赏。

2 个答案:

答案 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)