After a user successfully registers an account (creates a username and password) the webpage returns a blank registration form.
I would like to redirect to the 'landingpage' url after successful registration.
Here is the html form:
<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>
and 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'), ]
Should the success_url='landingpage' redirect to the landingpage url?
How do I redirect to the landingpage url after a successful registration?
You are looking for the reverse_lazy
function, it is included inside the django.core.urlresolvers
and must be imported using from django.core.urlresolvers import reverse_lazy
The code should be similar to:
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
That function will traverse your urls and make the proper redirection after success registration.
Take a look at the django docs for more options: https://docs.djangoproject.com/en/1.11/ref/urlresolvers/#reverse-lazy