如何将先前上载的图像加载到HTML文件中?

时间:2014-06-12 05:44:30

标签: django python-2.7 django-1.6

所以我在http://www.tangowithdjango.com/book/chapters/login.html的指导下设置了个人资料图片上传。 然后我发现第二个答案(由用户Raisins提供)对我有用并实现它Extending the User model with custom fields in Django。我一直认为这个答案已经过时,我也尝试过这里提供的迁移Get rid of get_profile() in a migration to Django 1.6的解决方案,但这并没有改善我的情况

然后在我的视图中,我将所需的详细信息(包括图像)添加到字典中,然后将i渲染到HTML页面。看起来UserProfile似乎没有返回正确的对象。

u=User.object.get(username__exact=request.user)
profile=UserProfile.objects.get(user=u)
global client
client['login']=True
client['name']=u.username
client['password']=u.password
client['email']=u.email
client['picture']=profile.picture
return render(request,'index.html',{'client':client})

当我尝试在HTML页面上显示详细信息时,除了图像之外的所有内容都会被加载。 我试过了

<img src="profile_images/{{client.picture}}">

其中profile_images位于根目录中。我检查了元素,我发现了这个

<img src="/static/profile_images/%7B%7B%20client.picture%20%7D%7D">

我期待的地方&#34; 1.jpg&#34;代替&#34;%7B%7B%20client.picture%20%7D%7D&#34;。

感谢任何帮助。感谢

2 个答案:

答案 0 :(得分:0)

Raisin's answer已过时。请再次使用Django 1.6中的don't use AUTH_PROFILE_MODULE。实际上,您甚至不需要处理post_save信号。

基于相同的教程,您将找到视图的代码:

u = User.objects.get(username=request.user)

try:
    p = UserProfile.objects.get(user=u)
except:
    p = None

return render(request,'index.html',{'client':client, 'userprofile':p})

在您的模板中使用:

    {% if userprofile.picture %}
        <img src="{{ userprofile.picture.url }}"  />
    {% endif %}

答案 1 :(得分:0)

我使用

解决了我的问题
{% load staticfiles %}
<img src="{% static client.picture %}"  />