Vistas personalizadas con django-Registration
Necesito hacer una modificación muy simple (requiero que ciertas vistas solo aparezcan cuando un usuario no está autenticado) a las vistas predeterminadas de registro de django. Por ejemplo, si estoy conectado, no quiero que los usuarios puedan volver a visitar la página / registrarse.
Entonces, creo que la idea aquí es que quiero subclasificar elregister
vista desde django-registro. Esto es justo donde no estoy seguro de cómo proceder. ¿Es esta la dirección correcta? ¿Debo probar el estado de autenticación del usuario aquí? Consejos y consejos bienvenidos!
Edita
Creo que este es el camino correcto aquí:Django: Redirige a los usuarios registrados desde la página de inicio de sesión
Edit 2
Solución
Cree otra aplicación, por ejemplo,custom_registration
, y escriba una vista como esta (la mía también usa un formulario personalizado):
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)
Tuve que usar los mismos parámetros de función, pero de lo contrario solo incluiría la prueba, y si la pasamos, continuaremos con la función principal.
No olvide poner esto en su URLConf tampoco (nuevamente, esto también incluye algunas cosas sobre mi formulario personalizado):
URLConf @ de nivel superior
(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'),
)