0

利用者の出席の有無を確認する。is_attendingで構文エラーを発生させずにコンテキスト変数をテンプレートに渡すにはどうすればよい'is_attending': context['is_attending']ですか? このチェックは、基本的に div のスタイリングなどに使用されます。私は何を間違っていますか?

テンプレート:

{% for event in upcoming %}
    {% registration %}

    {% if is_attending %}
         Registered!
    {% else %}
          Register button
    {% endif %}

    yadda yadda divs...
{% endfor %} 

フィルター.py

@register.inclusion_tag('events/list.html', takes_context=True)
def registration(context, event):
    request = context['request']
    profile = Profile.objects.get(user=request.user)
    attendees = [a.profile for a in Attendee.objects.filter(event=event)]
    if profile in attendees:
        'is_attending': context['is_attending']
        return is_attending
    else:
        return ''

ありがとうございました!

4

1 に答える 1

10

'is_attending': context['is_attending']は有効な python ではありません。むしろ、部分的な辞書のように見えます。.inclusion_tag()コードは dict を返すことになっているため、代わりに次のことを意味している可能性があります。

if profile in attendees:
    return {'is_attending': context['is_attending']}
else:
    return {'is_attending': ''}

また、コンテキストのみを引数として受け取ることにも注意してtakes_contextください。カスタムタグのハウツーから:

テンプレート タグを作成する際に takes_context を指定すると、タグには必須の引数がなく、基になる Python 関数には 1 つの引数 (タグが呼び出されたときのテンプレート コンテキスト) が含まれます。

したがって、タグは次のようになります。

 {% registration %}

完全なメソッドはevent、コンテキストから直接引数を取得できます。

@register.inclusion_tag('events/list.html', takes_context=True)
def registration(context):
    request = context['request']
    event = context['event']
    profile = Profile.objects.get(user=request.user)
    attendees = [a.profile for a in Attendee.objects.filter(event=event)]
    if profile in attendees:
        return {'is_attending': context['is_attending']}
    else:
        return {'is_attending': ''}
于 2012-08-22T19:20:35.817 に答える