所以我在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;。
感谢任何帮助。感谢
答案 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 %}" />