1

私は django (Grails から来ました) を初めて使いました。特に、変数をテンプレート内に直接記述するのではなく、対処しなければならないすべてのカスタム タグを使用しています。

さて、私がしなければならないことは非常に単純なことでしたが、何らかの理由で完了するのに長い時間がかかります. 私がやりたいのは、指定されたパスが現在の URL と等しいかどうかをチェックし、true の場合はクラスを返すタグを作成することでした。

<li class="{% check_url '/login/' 'current_page_item' %}">
    <a href="{% url social_login %}">login</a>
</li>

しかし、takes_context でタグを登録しようとしたときに問題が発生しました。

レンダリング中に TypeError をキャッチしました: simple_tag() が予期しないキーワード引数 'takes_context 'を取得しました

from django import template

register = template.Library()

@register.simple_tag(takes_context=True)
def check_url(context, path, attr):
        if context['request'].environ.get('PATH_INFO') == path:
            return attr
        else:
            return ''

どうすれば修正できますか?また、それを行うより良い方法はありますか?

4

2 に答える 2

1

それを行うための別のアプローチ(およびハードコードされたURLを回避するため):

{% url social_login as the_url %}
{% ifequal the_url request.path %}
....
{% endif %}

または、このようなものをチェックしてください!

于 2011-03-08T22:13:03.427 に答える