django-如何在django应用程序的所有模板中提供图像?

时间:2017-02-14 20:33:35

标签: django django-templates

我想在我的django项目的所有页面中显示用户的头像。 我在base.html和href中使用了<img>标记:{{ request.user.profile.get_avatar }}。 但它无法正常工作。 在项目的第一页它可以工作,但在另一页不起作用。

问题出在地址上。 例如,在图片显示的网址为www.mysite.com/index的索引页面中。但是在www.mysite.com/v1/v2/v3中没有显示图像。

这是个人资料类的get_avatar方法:

def get_avatar(self):
    if self.avatar:
        return os.path.join(settings.MEDIA_URL + str(self.avatar))
    else:
        return os.path.join(settings.MEDIA_URL + str('avatars/student.jpg'))

view of not working picture

def profile_me(request):
    the_profile = get_object_or_404(Profile, user=request.user)
    klasses = KlassStudents.objects.filter(student=request.user.profile)
    return render(request, 'ejazeostad/profile/profile.html', {'profile': the_profile, 'klasses': klasses})

1 个答案:

答案 0 :(得分:1)

MEDIA_URL设置应为绝对网址,例如

MEDIA_URL = '/files/'

目前,您有一个相对网址'files/'。这意味着URL会根据您所在的页面而变化。当您访问www.mysite.com/index时,相对网址会扩展为www.mysite.com/files/avatars/avatar.jpg,但是当您访问www.mysite.com/v1/v2/v3时,相对网址会扩展为www.mysite.com/v1/v2/files/avatars/avatar.jpg,这是不正确的。