1

ホテルというカテゴリを含む一連の記事 (静的サイトの生成にペリカンを使用) があります。これらのホテルを並べ替えたいと思います。問題は、ホテルだけが「都市」と呼ばれる属性を持ち、他の記事には属性がないことです。これにより、明らかに次のエラーが発生します。

Caught exception "'pelican.contents.Article object' has no attribute 'city'".

私が使用しているコードは次のとおりです。

{% for article in articles|sort(attribute='city') %}
{% if article.category == 'hotels' %}
    <a href="hotels/{{ article.slug }}.html">
    <p>{{ article.title }}</p>
    </a>
{% endif %}
{% endfor %}

属性が存在するかどうかを確認し、エラーが発生しないようにデフォルト値を提供する方法はありますか?

4

4 に答える 4

1

ifステートメントをforフィルターとしてループに移動できる場合があります。

for article in articles if article.category == 'hotels' | sort(attribute='city')
于 2013-03-24T04:44:59.600 に答える
0

ホテルのみを反復処理する場合は、 SeanVieiraの回答を参照してください。すべての記事を繰り返し処理したいが、残りは任意の順序でホテルを並べ替える場合は、マクロを使用して行うことができます。

{% macro my_macro(article) %}
    ...
{% endmacro %}

{% for a in articles if a.category == 'hotels' | sort(attribute='city') %}
    {{ my_macro(a) }}
{% endfor %}

{% for a in articles if a.category != 'hotels' %}
    {{ my_macro(a) }}
{% endfor %}

my_macroこれには、最初にホテルごとに、希望する順序で、次にホテルではない記事ごとに定義したすべてのものが含まれます。

于 2013-03-24T05:46:46.590 に答える