2012-02-26 6 views
1

私は、投票コードをhtmlとしてレンダリングするための包含タグと2つのtemplatetagsを書きました。here you can seeinclusionタグ内にtemplatetagsを使用できますか?

ご覧のとおり、レンダリング対象の包含タグvote_buttons_forには、vote_buttons.htmlが含まれています。テンプレートの中で、私はis_up_voted_byis_down_voted_byテンプレートのタグを同じファイルに使用しようとしています。それはテンプレートをレンダリングしますが、templatetagsはエラーを出すことなく動作しています。

なぜこのようなことが起こるのですか?

答えて

2

添付のテンプレートvote_buttons.htmlには{{user}}コンテキスト変数が必要です。 vote_button_forは、「ユーザ」の項目を含むdictを返しません。 {{ユーザー}}がリクエストユーザーであると仮定すると、次のようなものを使用できます。

@register.inclusion_tag('vote_buttons.html',takes_context=True) 
def vote_buttons_for(context, object, *args, **kwargs): 
    return { 
     "user": context['user'], 
     "object": object, 
     "vote_model": "%s.%sVote" % (
      object._meta.app_label, object._meta.object_name) 
    } 
+0

尋ねた後、わかりました。 request.userをそのコンテキストに追加するための注意として、インクルードタグは 'takes_context = True'パレメーターを持つ必要があります。その後、ユーザオブジェクトを ''ユーザ ''として追加することができます:context ['user'] '...あなたは[ここをクリックしてください](https://github.com/miratcan/qhonuskan-votes/blob/fc9d0564d491541f6192892544c4d2b253561872/qhonuskan_votes/ templatetags/qhonuskan_votes.py#L32)を参照してください。 –

+0

そうですね、忘れてしまいました、ありがとう! – jpic

+0

質問を閉じて、私は私の答えを改善することができるかどうかを確認するためにもう一度開いた。開いている質問に取り組んで時間を費やしているはずだった。 – jpic