Search code examples
pythondjangodjango-registrationdjango-users

Custom registration redirect in django


I have made a registration form. When users register they should be redirected to a different url with for a different view to work.

My view.py

def register(request):
    if request.method=='POST':
        user_form=UserRegistrationForm(request.POST)
        if user_form.is_valid():
            new_user=user_form.save(commit=False)
            new_user.set_password(
                                  user_form.cleaned_data['password'])
            new_user.save()
            company=Company.objects.create(user=new_user)
            new_user = authenticate(username=user_form.cleaned_data['username'],
                                    password=user_form.cleaned_data['password2'],
                                    )
            login(request, new_user)
            return render(request,'account/register_done.html',{'new_user':new_user})
    else:
        user_form=UserRegistrationForm()
    return render(request,'account/register.html',{'user_form':user_form})

urls.py

urlpatterns = [
               #url(r'^login/$',views.user_login,name='login'),
               url(r'^login/$','django.contrib.auth.views.login',name='login'),
               url(r'^logout/$','django.contrib.auth.views.logout',name='logout'),
               url(r'^logout_then_login/$','django.contrib.auth.views.logout_then_login',name='logout_then_login'),
               url(r'^$',views.dashboard,name='dashboard'),
               url(r'^register/$',views.register,name='register'),
               url(r'^addcompany/$',views.companyadd,name='companyadd'),
               url(r'^addcompanyreg/$',views.companyaddreg,name='companyaddreg'),
               #url(r'^createinvoice/$',views.createinvoice,name='createinvoice'),
               url(r'^createreceivable/$',views.createreceivables,name='createreceivable'),
               ]

When users register they should be redirected to

url(r'^addcompanyreg/$',views.companyaddreg,name='companyaddreg'),

Please guide.


Solution

  • Just do a redirect after you handle the POST request instead of rerendering the form:

    from django.core.urlresolvers import reverse
    ....
    
    if user_form.is_valid():
        ....
        return HttpResponseRedirect(reverse('companyaddreg'))
        #return render(request,'account/register_done.html',{'new_user':new_user})