Мне нужно сделать очень простое изменение - требовать, чтобы определенные представления отображались только тогда, когда пользователь не аутентифицирован, - к представлениям по умолчанию для django-регистрации. Например, если я вошел в систему, я не хочу, чтобы пользователи могли снова посещать страницу / register.
Итак, я думаю, что идея заключается в том, что я хочу выделить подкласс register
из django-registration. Это как раз то, где я не уверен, как поступить. Это правильное направление? Должен ли я проверить статус аутентификации пользователя здесь? Советы и советы приветствуются!
Редактировать
Я думаю, что это правильный путь: Django: Перенаправление авторизованных пользователей со страницы входа
Редактировать 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)
Мне пришлось использовать те же параметры функции, но в остальном просто включить тест, и если мы его пройдем, перейдем к основной функции.
Не забудьте также поместить это в свой 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'),
)