私はループを実行するためにテンプレートフィルタを使用しようとしていますが、私は同じステートメント/テンプレート内に2つのpythonステートメントを組み合わせることができません。テンプレートで2つの変数を組み合わせる正しい方法は何ですか?以下の構文と説明をご覧ください:Djangoテンプレートで2つのテンプレートタグをネストまたは共同使用する方法はありますか?
私は二重インデックスを持つフォーラムを構築しています。つまり、カテゴリのリストでcol-md-2を取得しました。各カテゴリにはフォーラムがあり、クリックされたカテゴリに応じて、そのカテゴリのフォーラムに次のcol-md-2が表示されます。残りのcol-md-8は、どのカテゴリとどのフォーラムが選択されたかに基づいてコンテンツを取得します。
マイロジック:
私は、ページがロードされたか、どのカテゴリまたはフォーラムが選択されますその関係なく変更することはありませんカテゴリのリストをロードするテンプレートタグを定義しました。それはうまく動作します。しかし、選択したカテゴリに基づいて、私の2番目の列にはデータが取り込まれる必要があります。このため、カスタムフィルタを定義しようとしています(下記参照)。しかし、私は、HTMLをレンダリングするためにループを実行する別のテンプレートに渡す必要があるので、これをどのように使用するかはわかりません。このテンプレートのforループを(別のテンプレートに渡すのではなく)作成したとしても、ネストされたテンプレートタグのようなものが必要です。{% for forum in {{ forum.category|forumindexlistbycategory }} %}
どちらの場合でも、タイプInvalid filter: 'forumindexlistbycategory'
または"with" in u'include' tag needs at least one keyword argument
のエラーが発生します。
私は私のpybb_tags.pyで、次のカスタムテンプレートフィルタを定義しました:
from pybb.models import Forum
@register.filter
def forumindexlistbycat(category):
forumlistbycat = Forum.objects.filter(category=category)
return forumlistbycat
、次のように私のテンプレートでは、私はそれをロードしようとしている:
{% load i18n pybb_tags %}
<div class='category'>
{% if category %}
<h3>{{ category }}</h3>
{% include 'pybb/forumindex_list.html' with forum_list=category.forums_accessed category=category parent_forum='' %}
{% else %}
<h3>{{ forum.category }}</h3>
{% include 'pybb/forumindex_list.html' with forum_list= %}{{ forum.category|forumindexlistbycategory }}
{% endif %}
</div>
こんにちは。このカスタムフィルタを含むカスタムtemplatetagファイルの名前はpybb_tags.pyですので、{{%load i18n pybb_tags forumindexlistbycat%} '、{{%load i18n pybb_tags%}}、{{%load i18n pybb_tags% } {%forumindexlistbycat as forumindexlistbycategory%} 'しかし、これらの2つのエラーが発生するたびに、' 2行目のブロックタグが無効です: 'forumindexlistbycat'。 'このタグを登録したり読み込んだのを忘れましたか? 'または' forumindexlistbycat 'は登録されたタグライブラリではありません。私はあなたの構文が真実かもしれないと思うが、私はどのように私のテンプレートにこのフィルタを適切にロードするのですか? –
あなたのタグファイルにあなたのフィルタとして名前をつけて、あなたのappディレクトリの 'templatetags'フォルダに入れてみてください。したがって、 '../app/templatetags/forumindexlistbycat.py'のようなパスがあります – toffi9
templatetagsフォルダに空のファイル '__init __。py'も追加してください。 – toffi9