1

タスクは簡単です:

If user visits site root then:
    if user is authenticated then:
        redirect to /dashboard/
    else:
        redirect to settings.LOGIN_URL

それを実装する方法はたくさんありますが、urls.pyだけを使用する必要があるような方法があるかどうか疑問に思います。

RedirectViewlogin_required(RedirectView.as_view(url=my_url))で解決策を見つけましたが、柔軟ではない reverse() の代わりに静的な my_url しか記述できません。

4

2 に答える 2

1

LoginRequiredをビューにミックスインする必要があります。ミックスインの例はここにあります:

http://djangosnippets.org/snippets/2442/

次に、そのビューを定義する場所で、次のことを行います。

class RedirectView(LoginRequiredMixin, DetailView):
    ....

または、継承しているクラスベースのビュー。お役に立てば幸いです。

于 2012-11-10T20:24:32.437 に答える
1

reverse_lazy次のように、URL 構成で (Django 1.4) を使用できます。

from django.conf.urls.defaults import url, patterns
from django.core.urlresolvers import reverse_lazy
from django.shortcuts import redirect

urlpatterns = patterns('',
    url(r'^/$', lambda request: return redirect(reverse_lazy('url_name')),
)

LOGIN_URL別の可能性は、を使用して定義することです。そのため、リダイレクトでreverse_lazy引き続き使用できます。settings.LOGIN_URL

コードはテストされていないため、どこかにタイプミスがある可能性があります。

于 2012-11-10T19:47:43.870 に答える