33

これが私のbase.htmlヘッダーのコードです

    <script>
        var auth_status = "{{ user.is_authenticated }}"
    </script>

    {% block scripts %}  {% endblock %}

私のサイトの残りのスクリプトは、ブロック スクリプトにあります。

子テンプレート (スクリプト ブロック内およびスクリプト タグ内) には、次のコードがあります。

         if (auth_status) {
          //something
         }

当面のエラーは、ユーザーがログインしているかどうかに応じて、auth_status が常に True であるということです。Request_context はテンプレートに渡されているため、エラーにはなりません。

ありがとう

4

2 に答える 2

113

あなたのauth_status変数はブール値ではなく文字列のようです。JavaScript で空でない文字列を含む変数はtrueif節で評価されます。

とにかく、のようなもの

<script>
    var auth_status = {{ user.is_authenticated }};
</script>

次の HTML が生成されるため、機能しません。

<script>
    var auth_status = True;
</script>

Python の True ブール値は大文字です。

これにより、Python から Javascript への変換が行われます。

<script>
    var auth_status = {{ user.is_authenticated|yesno:"true,false" }};
</script>

ここで yesno ドキュメントを確認してください: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#yesno

于 2012-09-12T20:28:01.663 に答える