我只想为我糟糕的英语道歉。 (我来自俄罗斯)
所以,我想在我的网站上添加分页。 想象一下,我们有两个页面: site.com / (作为主页),其上有帖子列表, 和 site.com/tag/tagname - 按标记发布列表。
两个页面都必须有一个分页器。 我想为分页块 paginator.html 创建单独的模板,并将其包含在 index.html 和 tag.html
网页网址必须如下所示: site.com/5 和 site.com/tag/tagname/5 < / strong>即可。因此,我们为 {%url%} 标记提供了不同数量的参数:主页为1,标记页为2。
只是简单的例子:
urls.py:
app_name = 'test_app'
urlpatterns = [
url(r'^$', views.index, name = 'index'),
url(r'^(?P<page_num>[0-9]+)$', views.index, name = 'index'),
url(r'^tag/(?P<tag_name>[-\w]+)$', views.tag, name = 'tag'),
url(r'^tag/(?P<tag_name>[-\w]+)/(?P<page_num>[0-9]+)$', views.tag, name = 'tag'),
]
views.py
def paginate(objects_list, in_page, page_num):
paginator = Paginator(objects_list, in_page)
page = paginator.page(page_num)
return page
def index(request, page_num = 1):
page = paginate(questions, 5, page_num)
return render(request, 'test_app/index.html', {
'questions': page,
})
def tag(request, tag_name, page_num = 1):
page = paginate(questions, 5, page_num)
return render(request, 'test_app/tag.html', {
'questions': page,
'tag_name': tag_name,
})
问题是一系列问题。
的index.html
{% for question in questions %}
Author: {{ question.author }} <br>
Title: {{ question.title }} <br>
Body: {{ question.body }} <br>
{% endfor %}
{% load i18n %}
{% trans "test_app:index" as page_url %}
{% include "./paginator.html" %}
tag.html
Posts by tag: {{ tag_name }} <br> <br>
{% for question in questions %}
Author: {{ question.author }} <br>
Title: {{ question.title }} <br>
Body: {{ question.body }} <br>
{% endfor %}
{% load i18n %}
{% trans "test_app:tag" as page_url %}
{% trans tag_name as var1 %}
{% include "./paginator.html" %}
paginator.html
{% if questions.has_previous %}
<a href = "{% url page_url 1 %}"><button> << </button></a>
<a href = "{% url page_url var1 questions.previous_page_number %}"><button> {{ questions.previous_page_number }} </button></a>
{% endif %}
<a><button> {{ questions.number }} </button></a>
{% if questions.has_next %}
<a href = "{% url page_url var1 questions.next_page_number %}"><button> {{ questions.next_page_number }} </button></a>
<a href = "{% url page_url var1 questions.paginator.num_pages %}"><button> >> </button></a>
{% endif %}
我试图运行这个例子。它适用于tag.html。
对于index.html我有这样的信息:
/ test /的NoReverseMatch 反转&#39;指数&#39;有参数&#39;(&#39;&#39;,2)&#39;和关键字参数&#39; {}&#39;未找到。尝试了2种模式:[&#39; test /(?P [0-9] +)$&#39;,&#39; test / $&#39;]
所以我的问题。 我如何使用{%url%}标签,如paginator.html中的tamplate内部,如果我不知道,我当前网址包含多少参数?
另外,我只想使用变量名而不是&#34;问题&#34;在paginator.html中。
我试过了:
在tag.html和index.html中我写道: {%trans question as page_object%}
并使用&#34; page_object&#34;而不是&#34;问题&#34;在paginator.html中。但我有错误信息:
&#39;页&#39;对象没有属性&#39;替换&#39;
{%trans question as page_object%}
我尝试了几种变体,但他们都没有做好。我不知道,我还能做些什么。
我不想在每个页面中粘贴分页符。