URLを介してテンプレートに渡されるintをキャストしたいのですが、str
関数が定義されていません。
どうすればこれを回避できますか?
これが私のコードです:
{% extends "base.html" %}
{% block content %}
{% for post in posts %}
{% set year = post.date.year %}
{% set month = post.date.month %}
{% set day = post.date.day %}
{% set p = str(year) + '/' + str(month) + '/' + str(day) + '/' + post.slug %}
<h3>
<a href="{{ url_for('get_post', ID=p) }}">
{{ post.title }}
</a>
</h3>
<p>{{ post.content }}</p>
{% else: %}
There's nothing here, move along.
{% endfor %}
{% endblock %}
Jinja2は、~
演算子の代わりに、最初に引数を文字列に自動的に変換する+
演算子も定義しています。
例:
{% set p = year ~ '/' ~ month ~ '/' ~ day ~ '/' ~ post.slug %}
その他の演算子 を参照してください。または、本当にstr
を使用したい場合は、 Environment.globals 辞書を変更してください。
式の文字列にキャストするには、x|string()
の代わりにstr(x)
を使用します。
string()
はフィルターの例であり、学ぶ価値のあるいくつかの便利なフィルターがあります。
join
を使用できます:
{% set p = (year, month, day, post.slug)|join("/") %}