【问题标题】:Seeing an avatar in multiple views in Django在 Django 的多个视图中查看头像
【发布时间】:2015-04-14 19:25:36
【问题描述】:

我有一个项目,让用户可以选择上传头像。上传工作正常,事实上,我可以在项目的根/ 中看到头像。但是,当我导航/anything_else/ 时,我的项目似乎找不到头像。

下面是模型中处理上传的相关部分:

avatar = models.ImageField('profile picture', upload_to='static/media/images/avatars/', null=True, blank=True)

在我的user_base.html 模板中,我有以下显示头像的行

<img id="profile_pic" src="{{ user.avatar }}" alt="Profile picture" style="width:30px;height:30px;border:0">

所以如果我上传图片guitar.jpg,然后去mysite.com/static/media/images/avatars/guitar.jpg,就会被找到。

但是,如果我导航到 mysite.com/news/,我仍然希望有一个可见的头像,但我得到的是 404。这是因为它在 mysite.com/news/static/media/images/avatars/guitar.jpg 查找图像

我听说过模板继承,但我不确定如何做到这一点。有什么想法吗?

编辑

我通过改变解决了它

<img id="profile_pic" src="{{ user.avatar }}" alt="Profile picture" style="width:30px;height:30px;border:0">

<img id="profile_pic" src="/{{ user.avatar }}" alt="Profile picture" style="width:30px;height:30px;border:0">

【问题讨论】:

    标签: django django-templates avatar


    【解决方案1】:

    问题与模板继承无关,似乎您的MEDIA_URL 不是以/ 开头的

    这意味着您有一个相对 url(请参阅Absolute vs relative URLs

    我也认为你需要在模板中使用&lt;img src="{{ user.avatar.url }}"&gt;

    https://docs.djangoproject.com/en/1.7/ref/models/fields/#django.db.models.fields.files.FieldFile.url

    【讨论】:

    • STATIC_URL = '/static/'。我还尝试将/ 添加到upload_to 并导致崩溃。
    • 对不起,我的意思是MEDIA_URL,而不是upload_to,因为那是磁盘上的路径而不是url
    • MEDIA_URL = ''。我的media 目录在我的static 中,所以我认为应该没问题。
    • 你做错了,你应该正确设置MEDIA_URL,这样你就不必在你的模板中添加随机的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2019-11-20
    • 2023-03-12
    • 2013-10-11
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多