64

デフォルトでは、ログイン後、django はユーザーをアカウント/プロファイル ページにリダイレクトします。LOGIN_REDIRECT_URL を編集すると、settings.py で指定した別のページにユーザーを送信できます。

これは素晴らしいことですが、(ログイン後に) ユーザーをカスタム ページにリダイレクトして、そのページへのリンクが次のようになるようにしたいと考えていますmysite.com/username。したがって、デフォルトのアカウント/プロファイルまたは LOGIN_REDIRECT_URL 設定は、どちらも静的であるため、この場合は機能しません。私の場合、usernameアドレスのセクションはユーザーごとに変わります。

ユーザーがログインしたときに、次のようなアドレスにユーザーの名前が含まれるカスタムユーザーページに移動する方法を教えてください mysite.com/username。ご意見をお待ちしております。

4

7 に答える 7

95

より単純なアプローチは、ページLOGIN_REDIRECT_URLからのリダイレクトに依存しています。重要なことは、ユーザー情報が自動的にリクエストに含まれることです。

仮定する:

LOGIN_REDIRECT_URL = '/profiles/home'

そして、urlpattern を設定しました:

(r'^profiles/home', home),

次に、ビュー用に記述する必要があるのhome()は次のとおりです。

from django.http import HttpResponseRedirect
from django.urls import reverse
from django.contrib.auth.decorators import login_required

@login_required
def home(request):
    return HttpResponseRedirect(
               reverse(NAME_OF_PROFILE_VIEW, 
                       args=[request.user.username]))

NAME_OF_PROFILE_VIEW、使用しているコールバックの名前です。django-profiles では、NAME_OF_PROFILE_VIEW「profiles_profile_detail」にすることができます。

于 2011-08-15T03:06:17.550 に答える
12

ここに記載されているように、ユーザーを認証してログインできます: https://docs.djangoproject.com/en/dev/topics/auth/default/#how-to-log-a-user-in

これにより、ユーザー オブジェクトにアクセスしてユーザー名を取得し、カスタム URL に対して HttpResponseRedirect を実行できます。

于 2011-02-02T04:04:47.433 に答える