0

こんにちは?特定のユーザーが django にログインすると、そのユーザーをカスタム ページにリダイレクトしようとしています。管理者は通常の管理インターフェースに誘導され、この特定のユーザーは独自のカスタム ページに移動します。私はこのコードを書き、自分のビューに配置しました

def custLogin(request):
    if request.user.username == '***':
        return HttpResponseRedirect('http://********************.html')
    else:
        return login(request,template_name='login.html')

以下のように、urls.py のアカウント/ログイン URL を custLogin に指定しました。

(r'^accounts/login/', custLogin),

ただし、エラーが発生し続けます

Caught NoReverseMatch while rendering: Reverse for 'django.contrib.auth.views.login' with arguments '()' and keyword arguments '{}' not found.

任意のポインタをお願いします?

4

3 に答える 3

0

テンプレートでは、テンプレートの最初でこれを行うのを忘れている可能性があります。

{% load from future url %}

これは、次を使用するときに役立ちます。

{% url 'name_of_my_url_inurl.py' %}
于 2012-09-06T13:10:10.990 に答える
0

おそらく、ビューが処理された後にユーザーを別の場所に向けるために、 を返すリダイレクトショートカットを使用する必要があります。HttpResponseRedirectcustLogin

from django.shortcuts import redirect
def custLogin(request):
    if request.user.is_staff:
        return redirect('/some/admin/url')
    else:
        return redirect('/some/regular/user/url')

ドキュメントにあるようにredirect()、ビュー名、オブジェクト、または URL を渡すなど、さまざまな方法で関数を使用できます。詳細については、ドキュメントを参照してください

is_staffユーザーフィールドを使用して、ユーザーが管理者かどうかを判断していることに注意してください。

于 2012-09-06T13:06:58.883 に答える
0

各ユーザーを自分のページにリダイレクトするにはreverse

最初に、パラメーターを受け入れる URL ルートを作成します。ここに記載されています

そして、のようにリダイレクトします

return HttpResponseRedirect(reverse('arch-summary', args=[1945]))

どこでarch-summary - 名前付きの url であり、リストargs - そのパラメータです。例はこちら

管理者ユーザーと通常のユーザーを区別するには、ビューで確認して別の URL にリダイレクトします。

于 2012-09-06T13:18:17.297 に答える