登録とアルバムの 2 つのアプリがあります。ユーザーが「/」または「/home」にアクセスすると、ユーザーがログインしているかどうかに応じて、登録/ログイン フォームまたはアルバム管理ページが表示されます。
2 つの異なるアプリ間で同様の URL をディスパッチする方法について確立されたベスト プラクティスはありますか? どちらかのアプリが他のアプリについて知る必要がないように、これを構築する方法はありますか?
ありがとう!
登録とアルバムの 2 つのアプリがあります。ユーザーが「/」または「/home」にアクセスすると、ユーザーがログインしているかどうかに応じて、登録/ログイン フォームまたはアルバム管理ページが表示されます。
2 つの異なるアプリ間で同様の URL をディスパッチする方法について確立されたベスト プラクティスはありますか? どちらかのアプリが他のアプリについて知る必要がないように、これを構築する方法はありますか?
ありがとう!
ユーザーがログインしていないときに「ホームページ」を表示するのではなく、ユーザーがログインしていないときにログインフォームを表示する必要がある場合は、「ログインが必要」デコレーターを使用することをお勧めします。
from django.contrib.auth.decorators import login_required
@login_required
def show_home(request):
"""
Show home page...
"""
...
このデコレータは、ビュー レベル (上図) または urls.py (下図) で適用できます。
url(r'^reports/', login_required(ListView.as_view(
template_name="...",
queryset = ...,
context_object_name = ...
))),
2 番目のパターンは、汎用ビューとクラス ベースのビューでよく使用されます。
どちらのソリューションも、Django の組み込みのログイン/登録装置 (必要に応じてカスタマイズされたテンプレートとカスタマイズされたビューを使用) に接続していることを前提としています。カスタムの登録/認証フレームワークを使用している場合でも、デコレータ パターンを使用することをお勧めします。
に設定LOGIN_URL
し、ビューを/registration/login
で装飾すると、自動的にリダイレクトされます。/
@login_required
ユーザーがサインインするときに変数をセッションに追加し、/ または /home 要求でそれをチェックします。