【问题标题】:syntax in wagtail HTML template filewagtail HTML模板文件中的语法
【发布时间】:2021-10-10 05:33:55
【问题描述】:

在 Wagtail 的 HTML 模板下面,

<h1>{{ page.title }}</h1>
    <div>{{ page.intro }}</div>

    {% for post in page.get_children %}
        <h2><a href="{% pageurl post %}">{{ post.title }}</a></h2>
        <p>{{ post.first_published_at }}</p>
        <p>{{ post.owner }}</p>

        {% if post.specific.rncategory.all.count %}
            {% for ctgy in post.specific.rncategory.all %}
                <a href="{% routablepageurl page "post_by_category" ctgy.slug %}">{{ctgy.category.name}}</a>
            {% endfor %}
        {% endif %}

        {% for tg in post.specific.rntags.all %}
            <button type="button">{{tg.tag.name}}</button>
        {% endfor %}
    {% endfor %}

Q1:为什么我们使用page.get_children & post.specific.rncategory.all.count 而不是page.get_children()post.specific.rncategory.all().count() 预计会得到纠正?

而在 PDB 调试交互会话中则相反(page.get_children 无效)。

(Pdb++) obj.get_children()[0]
<Page: Detail>
(Pdb++) obj.get_children()[0].specific.rncategory.all.count
*** AttributeError: 'function' object has no attribute 'count'
(Pdb++) obj.get_children()[0].specific.rncategory.all
<bound method BaseManager.all of <modelcluster.fields.create_deferring_foreign_related_manager.<locals>.DeferringRelatedManager object at 0x7f7076003790>>
(Pdb++) obj.get_children()[0].specific.rncategory.all()
<QuerySet []>
(Pdb++) obj.get_children()[1].specific.rncategory.all()
<QuerySet [<Link_PostDetail_Category: Link_PostDetail_Category object (2)>]>
(Pdb++) obj.get_children()[1].specific.rncategory.all().count()
1
(Pdb++) obj.get_children()[0].specific.rncategory.all().count()
0
(Pdb++) 

【问题讨论】:

    标签: wagtail


    【解决方案1】:

    这是 Django 模板语言的正常行为 - 根据设计,Django 模板代码不等同于 Python。

    Django 模板语法never uses () for function calls。相反,只要变量查找导致可调用,它将自动被调用,不带参数。请参阅https://docs.djangoproject.com/en/stable/ref/templates/language/#variables 下的“幕后花絮”。

    【讨论】:

      猜你喜欢
      • 2021-05-26
      • 2021-10-09
      • 2016-04-21
      • 2019-01-21
      • 2020-08-09
      • 1970-01-01
      • 2015-09-11
      • 2021-06-08
      • 2013-03-28
      相关资源
      最近更新 更多