Después de que un usuario registra con éxito una cuenta (crea un nombre de usuario y una contraseña), la página web devuelve un formulario de registro en blanco.
Me gustaría redirigir a la URL de la 'página de destino' después de un registro exitoso.
Aquí está el formulario html:
<form method="post" action="{% url 'register' %}"> {% csrf_token %} <table>{{ form.as_table }}</table> <input type="submit" value="register" /> <input type="hidden" name="next" value="{{ next }}" /> </form>
y urls.py:
from django.views.generic.edit import CreateView from django.contrib.auth.forms import UserCreationForm urlpatterns = [ url('^accounts/register/', CreateView.as_view( template_name='registration/register.html', form_class=UserCreationForm, success_url='landingpage' ), name='register'), url('^accounts/', include('django.contrib.auth.urls')), url(r'^$', views.landingpage, name='landingpage'), ]
¿Debería el success_url='landingpage' redirigir a la URL de la página de destino?
¿Cómo redirijo a la URL de la página de destino después de un registro exitoso?
Está buscando la función reverse_lazy
, está incluida dentro de django.core.urlresolvers
y debe importarse usando from django.core.urlresolvers import reverse_lazy
El código debe ser similar a:
from django.core.urlresolvers import reverse_lazy # more code goes here url('^accounts/register/', CreateView.as_view( template_name='registration/register.html', form_class=UserCreationForm, success_url=reverse_lazy('landingpage') # note the usage of reverse_lazy here ), name='register'), # also here
Esa función recorrerá sus URL y realizará la redirección adecuada después del registro exitoso.
Eche un vistazo a los documentos de Django para obtener más opciones: https://docs.djangoproject.com/en/1.11/ref/urlresolvers/#reverse-lazy