3

Bottle アプリケーションの特定の場所でリンクをフォーマットする必要があります。以前は、すべてのリンクが 1 つの SimpleTemplate ファイルにあり、次のようなマクロを定義しました。

%def mylink(obj):
    <a class="mylink" href="{{ get_url('view', id=obj.id) }}">{{ obj.title }}</a>
%end

へのリンクをフォーマットする必要がある場合は常にobj、次を使用しました。

%mylink(some_obj)

ここで、いくつかのテンプレートでこのようなリンクの形式を使用する必要があります。テンプレート定義を という別のファイルに移動し、マクロが必要なテンプレートにこのファイルを ingmacros.htmlしようとしました。%include

<!-- macros.html -->
%def mylink(obj):
    <a class="mylink" href="{{ get_url('view', id=obj.id) }}">{{ obj.title }}</a>
%end

<!-- somepage.html -->
%include macros
...
%mylink(some_obj)
...

ただし、Bottle はmylinkこのようなレイアウトでは名前を解決できません。

私はこれを行うことができることを理解しています:

<!-- mylink.html -->
<a class="mylink" href="{{ get_url('view', id=obj.id) }}">{{ obj.title }}</a>

<!-- somepage.html -->
...
%include mylink obj=some_obj
...

ただし、これはあまり高速ではないと感じているため、これを行うのは気が進まない (任意のページに書式設定するためのリンクが多数あります)。

他のオプションがありませんか?

4

1 に答える 1

0

この%includeステートメントは、含まれているテンプレートをすぐにレンダリングします。

Myby%rebaseコマンドを使用してこれを解決し、マクロを基本テンプレートに入れます。

于 2011-09-06T08:31:04.447 に答える