0

テンプレートのルート パス変数にアクセスしたいのですが、どうすればよいですか? これまでのところ、私は持っています:

{% if user.username == "" and request.path != "/login/" and request.path != "/"  %}
     <meta http-equiv="REFRESH" content="0;url=/login/">
{% else %}

私はこのようなものを書きたいと思います:

{% if user.username == "" and request.path != projectRoot+"/login/" and request.path != projectRoot  %}
     <meta http-equiv="REFRESH" content="0;url=projectRoot+/login/">
{% else %}

ビューからこの projectRoot 変数を作成して送信する必要がありますか、それとも既にその変数がありますか?

よろしくお願いします。

ロマン

4

2 に答える 2

1

テンプレート タグを使用して URl のフル パスを取得しrequest.full_path、文字列が含まれているかどうかを確認することはできますが、これは目的の操作を行うには非常に悪い方法です (無許可の場合はリダイレクトします)。

代わりに、以下を使用してビューを装飾する必要があります@login_required

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...
于 2013-04-10T09:37:20.343 に答える
0

テンプレートでこの種のリダイレクトを行うべきではないというティミーの意見には同意しますが、ビューへの完全な URL を取得する簡単な方法があることに注意してください。それは{% url %}タグを使用することです。そのタグ (およびreverseビュー内の関数) は、WSGI 環境から取得したサイトへのフル パスを認識しているため、追加の変数を渡す必要はありません。いずれにせよ URL パスをハードコーディングするべきではないので、これを使用することはあらゆる点で有利です。

于 2013-04-10T09:36:44.157 に答える