Django templatess

时间:2016-11-11 00:30:27

标签: python html django django-templates

我只想为我糟糕的英语道歉。 (我来自俄罗斯)

所以,我想在我的网站上添加分页。 想象一下,我们有两个页面: 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> &lt;&lt; </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> &gt;&gt; </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%}

我尝试了几种变体,但他们都没有做好。我不知道,我还能做些什么。

我不想在每个页面中粘贴分页符。

0 个答案:

没有答案