我创建了一个这样的标签:
@register.inclusion_tag('post/comment_block.html')
def limit_amount_in_a_page(page_nr=1, post_id=1, amount=5):
starting_index = page_nr*amount
for index in range(starting_index, starting_index + amount):
dosomething()
has_prev = (page_nr != 0)
has_next = ((page_nr + 1) * amount) < comments.count()
return {
something
}
问题是:page_nr始终不是int。
这就是我调用标签并将值分配给标签中的page_nr的方法:
{% limit_amount_in_a_page page_nr=my_page_nr post_id=post.id amount=4 %}
这是my_page_nr的值来自:
def to_post_page(request, post_id, page_nr):
post = get_object_or_404(Post, id=post_id)
form = CommentForm()
comments = Comment.objects.filter(pk=post_id)
return render(request, 'post/posts.html', {
'post': post,
'form': form,
'comments': comments,
'my_page_nr': page_nr,
})
这是调用视图的网址:
url(r'^(?P<post_id>[0-9]+)/(?P<page_nr>[0-9]+)/$', views.to_post_page, name="post"),
{% for post in my_posts %}
<li><a href="{% url 'forum:post' post.id 0 %} ">{{post.title}}</a></li>
{% endfor %}
传递给此url标记的值应为int。如你所见,我通过了0。 真的很感激任何帮助!
答案 0 :(得分:1)
page_nr
的值是从URL中提取的,因此是一个字符串。如果你需要它是一个int,转换它很简单 - 你可以在视图中执行此操作,例如:
return render(request, 'post/posts.html', {
'post': post,
'form': form,
'comments': comments,
'my_page_nr': int(page_nr),
})