我一直收到这个错误,我似乎无法修复它。每次新用户注册时,他/她都可以创建个人资料。我可以创建和编辑个人资料,但我无法查看个人资料。也许我的代码是错的,但是idk。我相当缺乏经验。
TypeError at /profile/1/
'Profile' object is not iterable
地址:
url(r'^profile/(?P<pk>\d+)/$', views.profile, name='profile')
查看:
@login_required
def profile(request, pk):
prof = get_object_or_404(Profile, pk=pk)
return render(request, 'blog/profile_detail.html', {'prof': prof})
型号:
class Profile(models.Model):
user = models.ForeignKey('auth.User', on_delete=models.CASCADE, related_name='prof')
bio = models.TextField(max_length=500, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(blank=True, null=True)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
HTML:
{% for pro in prof %}
<a href="{% url 'profile_edit' pk=prof.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
<h2>{{ user.username }}</h2>
<p>{{ user.profile.bio }}</p>
<p>{{ user.profile.location }}</p>
<p>{{ user.profile.birth_date }}</p>
{% empty %}
<a href="{% url 'profile_new' pk=prof.pk %}"><span class="gliphicon gliphicon-plus"></span></a>
{% endfor %}
如果我提供的信息太少,请说得很好,没有讨厌的评论和低票。请帮助一个菜鸟。
答案 0 :(得分:1)
您只是在上下文中将单个对象prof
传递给模板,但是迭代迭代。
您需要在模板中将{% for pro in prof %}
替换为{% if prof %}
。