2

既存のソリューションに不満を感じた後、Django 用の OpenId プロバイダーを作成しました。

誰かがどこかでhttp://tejp.de/users/abc/として自分自身を認証したいと思っていて、そのためにログインする必要がある場合、ユーザー名が「abc」にプリセットされたログインフォームを表示したいと思います。のような標準関数は、このためのパラメーターを提供していないようです。また、ログインビューに手動でredirect_to_loginリダイレクトするときにその値を事前設定する方法もわかりません。django.contrib.auth.views.loginまた、テンプレートに追加のパラメーター値を取得する簡単な方法がないように思われるため、そこにプリセット値を挿入することができます。

ログインフォームにユーザー名を自動的に入力する方法はありますか? 可能であれば、これには通常のログイン ビューを使用したいと思います。すべてのログイン コードをコピーして貼り付け、必要な変更を編集するのではありません。

4

2 に答える 2

1

覚えておいてください、django はすべて python であり、ソースはあなたの友達です。

の元ソースはこちらredirect_to_login

def redirect_to_login(next, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):
    "Redirects the user to the login page, passing the given 'next' page"
    if not login_url:
        login_url = settings.LOGIN_URL 
    return HttpResponseRedirect('%s?%s=%s' % (login_url, urlquote(redirect_field_name), urlquote(next)))

適切なパラメータを取る URL へのリンクで login_url を上書きすることさえできるようです。何かのようなもの

return redirect_to_login(login_url=reverse('my_login_view', [], {'username': username}))

新しいフォームは必要ありません。既存のログイン フォームに事前入力するだけで済みます。

于 2009-10-28T12:21:03.377 に答える
-1

上記の問題を解決する方法のいくつかは次のとおりです。

  1. 表示する前に、独自の認証フォームを作成し、ユーザー名を事前に入力してください。

  2. javascriptを使用して、URLからユーザー名を削除し、フォームに入力します。

于 2009-07-03T05:58:00.497 に答える