我正在尝试将帖子的作者链接到他的个人资料页面,但是当我点击链接时,请将两个/个人资料/不提及作者的ID。
我的views.py看起来像这样:
def userpage(request, id):
profil = get_object_or_404(UserProfile, pk=id)
context = {'profil': profil}
return render(request, 'gaestebuch/userpage.html', context)
我的urls.py看起来像这样:
url(r'^profiles/(?P<id>[0-9]+)/$', views.userpage, name='userpage')
我希望链接的html部分如下所示:
{% for e in latest_eintrage_list %}
<li>
<div id="comment_main">
---> <a href="{% url 'gaestebuch:userpage' profil.id %}">{{ e.author }}</a>
<br>
</div>
<a href="{% url 'gaestebuch:result' e.id %}">{{ e.title }}</a>
<br>
<div id="comment_main">
Comments: {{ e.comments.count }} | {{ e.created_date }} | {{ e.get_typ_display }}
</div>
{% if not forloop.last %}
<hr>
{% endif %}
</li>
{% endfor %}
标有箭头的部分是我希望链接到作者的部分。
models.py:
class UserProfile(models.Model):
user = models.OneToOneField(User)
info = models.CharField(max_length=200, blank = False, default=('keine Angabe'))
class Eintrag(models.Model):
author = models.ForeignKey('auth.User')
title = models.CharField(max_length=200)
text = models.TextField()
NEED = 'ND'
GIVE = 'GV'
TYP_CHOICES = (
(NEED, 'Need'),
(GIVE, 'Give'),
)
typ = models.CharField(max_length=2, choices= TYP_CHOICES, default=NEED)
created_date = models.DateTimeField(default=timezone.now)
我收到以下错误消息:
Reverse for 'userpage' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'gaestebuch/profiles/(?P<id>[0-9]+)/$']
我很高兴得到任何帮助:)
答案 0 :(得分:2)
在{% for e in latest_eintrage_list %}
循环中,您有一个变量profil
。因此,profil.id
被视为空字符串,并且url标记失败。
您可以将Eintrag.author
外键中的外键跟随User
模型,然后将一对一字段向后追溯到UserProfile
模型:
<a href="{% url 'gaestebuch:userpage' e.author.userprofile.id %}">{{ e.author }}</a>