我得到这个错误:NoReverseMatch at / Reverse for 'story' with keyword arguments '{'id': ''}' not found. 1 pattern(s) tried: ['story/(?P<id>[0-9]+)\\Z']
对于我的模板中的这一行:.
当我试图将它打印到屏幕({{ subject.list.0.id }})
时,它会打印id,没有任何问题,但由于某种原因,当我试图将它传递到<a href="{% url 'story' id=subject.list.0.id %}">
时,它不起作用。
URL:path("story/<int:id>", views.story, name="story")
,
观点:
def story(request, id):
story = Story.objects.get(id=id)
last_post = story.posts.all()[::-1][0]
return render(request, "story.html", {
"posts": story.posts.all(),
"deadline": last_post.deadline,
})
页面视图:
def index(request):
user = User.objects.get(id=request.user.id)
user_genre = user.genres.all()
stories = [{'list': Story.objects.order_by("-likes").all()[0:20], 'popular': 'true'},
{'list': Story.objects.all()[::-1][:20], 'new': 'true'}, ]
for genre in user_genre:
stories.append({'list': Story.objects.filter(genres=genre)[0:20], "genre": genre})
print(stories)
return render(request, "homepage.html", {
"genres": Genre.objects.all(),
"user": User.objects.get(id=request.user.id),
"stories": stories
})
- 主页模板中的“主题”来自
{% for subject in stories %}
。
编辑:
当我尝试执行stories=Story.objects.all()
,然后在模板中使用它作为<a href="{% url 'story' id=subject.id %}">link</a>
时,它的工作效果令人惊讶。然而,我的意图不是使用所有的职位。相反,我尝试使用以下结构将故事传递给模板:
stories = [{'list': Story.objects.order_by("-likes").all()[0:20], 'popular': 'true'},
{'list': Story.objects.all()[::-1][:20], 'new': 'true'}, ]
现在,当我尝试打印{{ subject.list.0.id }}
时出现了一个问题。它成功地打印了ID,但我无法以以下方式传递ID:<a href="{% url 'story' id=subject.list.0.id %}">
。不幸的是,这种方法不起作用。
下面是一个例子来说明这个问题:
{{ stories }}<br><br>
{{ subject }}<br><br>
{{ subject.list }}<br><br>
{{ subject.list.0 }}<br><br>
{{ subject.list.0.id }}<br><br>
有什么问题吗?我错过了什么?我将感谢任何帮助!
2条答案
按热度按时间jaxagkaj1#
问题是您没有检查
{{ subject.list.0 }}
是否存在。一个简单的解决方法是仅在长度为subject.list > 0
时访问{{ subject.list.0.id }}
。试试这个jinja片段
a11xaf1n2#
这里我设置了一个小项目的解决方案,我这边工作正常,请检查你那边
views.py
urls.py
列出Stories的Html代码
获取Stories的Html代码
管理面板
浏览器输出