我已经编写了以下代码,url正在被提取并且在本地主机admin 127.0.0.1:8080/admin中,但是它没有在我的网站上显示个人资料图片。 我的代码如下 在models.py
中class UserProfile(models.Model):
user = models.OneToOneField(User, related_name="profile")
name = models.CharField(max_length=250, null=True, blank=True)
profile_image = models.ImageField(upload_to = get_upload_file_name, null=True, blank=True)
url=models.CharField(max_length=500,null=True,blank=True)
def __str__(self):
return u'%s profile' % self.user.username
在views.py
中def home(request):
context ={'request': request, 'user': request.user}
return render(request,'home.html',context)
在home.html中,我写了以下内容
{% extends 'base.html' %}
{% block main %}
<div>
<h1>authentication demo</h1>
<p>
<ul>
{% if user and not user.is_anonymous %}
<li>
<a>Hello {{ user.get_full_name|default:user.username }}!</a>
</li>
<img src="{{ userprofile.url }}" alt="Some alt text">
</p>
</div>
{% endblock %}
问题是我应该在html中添加什么以及如何调用模型对象。
答案 0 :(得分:0)
首先,您必须get
UserProfile
这样的对象:
# views.py
from django.shortcuts import get_object_or_404
def home(request):
user_profile = get_object_or_404(UserProfile, user=request.user)
context = {
'request': request,
'user': request.user,
'user_profile': user_profile,
}
return render(request, 'home.html', context)
然后在您的HTML文件中执行以下操作:
{% extends 'base.html' %}
{% block main %}
<div>
<h1>authentication demo</h1>
<p>
<ul> {% if user_profile and not user_profile.user.is_anonymous %}
<li><a>Hello {{ user_profile.user.get_full_name|default:user.username }}!</a></li>
<img src="{{ user_profile.profile_image.url }}" alt="Some alt text">
</p>
</div>
{% endblock %}
答案 1 :(得分:0)
您正在尝试打印{{ userprofile.url }}
,但您的上下文中没有userprofile
个对象。
您应该可以使用个人资料模型中使用的user
related_name
通过profile
对象访问它;请务必使用正确的个人资料字段(profile_image
,而不是url
),并使用该字段的url
property:
<img src="{{ user.profile.profile_image.url }}" alt="Some alt text">