非常に簡単な変更を加える必要があります - ユーザーが認証されていないときに特定のビューのみが表示されるようにする必要があります。たとえば、私がログインしている場合、ユーザーが/ registerページに再びアクセスできるようにしたくありません。django-registrationでカスタマイズされたビュー
だから、私はregister
のビューをdjango-registrationからサブクラス化したいと考えていると思います。これは私が進める方法がわからないところです。これは正しい方向ですか?ここでユーザーの認証ステータスをテストする必要がありますか?ヒントとアドバイスを歓迎!
編集
私は、これはここに右のトラックだと思う:Django: Redirect logged in users from login page
編集2
ソリューション:
はcustom_registration
、例えば、別のアプリを作成し、書き込みこのようなビュー(私のカスタムフォームも使用します):
from registration.views import register
from custom_registration.forms import EduRegistrationForm
def register_test(request, success_url=None,
form_class=EduRegistrationForm, profile_callback=None,
template_name='registration/registration_form.html',
extra_context=None):
if request.user.is_authenticated():
return HttpResponseRedirect('/')
else:
return register(request, success_url, form_class, profile_callback, template_name, extra_context)
私は同じ関数のパラメータを使用しなければなりませんでしたが、それ以外の場合はテストだけを含めて渡した場合はmain関数に進みます。
(再び、これは同様に私のカスタムフォームに関するいくつかのものが含まれます)のいずれかURLconfを使っでこれを置くことを忘れないでください:
トップレベルのURLconf
(r'^accounts/', include('custom_registration.urls')),
(r'^accounts/', include('registration.urls')),
custom_registration.views
from django.conf.urls.defaults import *
from custom_registration.views import register_test
from custom_registration.forms import EduRegistrationForm
urlpatterns = patterns('',
url(r'^register/$', register_test, {'form_class': EduRegistrationForm}, name='registration.views.register'),
)
私はこれまでに私の編集ごとにこれを行っていましたが、私はあなたにそれをあげます。そのリンクをチェックすると、彼が他の関数の周りに関数をどのようにラップするのかがわかります。テストに合格すると、実際の関数にまで下がります。私は 'register'にあるテスト関数の中で同じパラメータを使わなければなりませんでしたが、そうでないとうまくいきました。それを超えてコードを複製する必要はありません。コードの2回目の編集を確認してください。 –
もちろん、ビュー内で元のビューを呼び出してその応答を返すこともできます。実際に私はずっと同じことをしています。私はここで言及していないが、それを簡単に保つために。 –
最新かつ最高の、この答えは現在時代遅れです!ビューは今すぐサブクラス化できます。 [django docs](https://docs.djangoproject.com/en/1.5/topics/class-based-views/intro/)および[django-registration docs](https://django-registration.readthedocs)を参照してください。 .org/ja/latest/views.html) –