在 Django 模板中传递 *args

Posted

技术标签:

【中文标题】在 Django 模板中传递 *args【英文标题】:Pass *args in django templates 【发布时间】:2017-11-05 13:52:43 【问题描述】:

我确实使用了django分页,但是urls有问题,这是我的urls.py:

url(r'^/blog/$', blog_view.main, name='blog'),    
url(r'^/blog/page/(?P<page_id>\d0,9)$', blog.post, name='blog_page'),

我的意见.py:

def post(request, page_id=None):
    posts = Posts.objects.all()
    pageid = page_id
    return render(request, 'base.html', 'posts': posts, 'pageid': pageid,)

我使用引导程序的 base.html:

% url 'blog_page' as blog_page % # Blog page need follow patterns
    <ul>
% for post in posts %
    <li % if request.path == htt://myblog.com/blog/page/5 % class="active" % endif %> post.title </li> # When I put blog_page django shows error. Help me how to put something to fix this condition.
% endfor %
   </ul>

【问题讨论】:

你想告诉我们问题出在哪里吗? 如果有人点击了一个页面(例如:当 request.path 为 /page/5 时)该页面应该有活动类。 % url 'blog_page' page_id % 【参考方案1】:

如documenation on HttpRequest objects 中所述, HttpRequest.path

表示请求页面的完整路径的字符串,不包括方案或域。 示例:“/music/bands/the_beatles/”

(强调我的)。

因此,在您的测试中,请忽略方案(顺便说一句,您错误地写为 htt://)和域部分:

<li % if request.path == /blog/page/5 % class="active" % endif %> post.title </li>

【讨论】:

太好了,有什么办法可以用动态 id 改变那个 5 吗?

以上是关于在 Django 模板中传递 *args的主要内容,如果未能解决你的问题,请参考以下文章

如何在django模板中读取传递过去的字典参数中的某一项?

Django:引用模板中的url名称并传递参数

在 django 中访问传递给模板的过滤器查询结果

在 Django 模板中传递 *args

在 django 模板 URL 标签中传递参数

Django,如何将变量从 Django 管理员传递到模板?