Alex D'ago
Alex D'ago

Reputation: 162

issue httpresponseredirect:unable to redirect to homepage

I’m keeping getting this redirect wrong either I got the code wrong or it keeps running in an infinite loop.

urls.py first app


urlpatterns = [
    path("",views.pomo,name="pomo"),
    path("agenda/",views.agenda,name="agenda"),
    path("notes/",views.notes,name="notes"),
  ]

urls.py main

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", include('pomofocus.urls')), 
    path ("login/", include('accounts.urls'))
]


urls.py accounts(2nd app)

urlpatterns = [
    path("register/",views.register_request, name="register")
]

views.py

from django.contrib import messages

def register_request(request):
    if request.method == "POST":
        form = NewUserForm(request.POST)
        if form.is_valid():
            #save user
            user = form.save()
            #login user
            login(request,user)
            #send success message 
            messages.success(request,"Congrats you are registered now")
            return redirect(“pomofocus:pomo")
        
        messages.error(request,"Unsuccesful registration.Try again.")
    form = NewUserForm()
    return render(request,"account/registration.html",context={"register_form":form})

Upvotes: 1

Views: 39

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 476594

You create a new form if the POST request is unsuccessful. You should keep the old form, such that errors can be displayed. You thus should change the logic such that you only create a new form in case the request is not a POST request:

from django.contrib import messages

def register_request(request):
    if request.method == 'POST':
        form = NewUserForm(request.POST, request.FILES)
        if form.is_valid():
            #save user
            user = form.save()
            #login user
            login(request,user)
            #send success message 
            messages.success(request, 'Congrats you are registered now')
            return redirect('pomo')
        else:
            messages.error(request, 'Unsuccesful registration.Try again.')
    else:  # ← only in case it is not a POST request
        form = NewUserForm()
    return render(request,'account/registration.html', {'register_form': form})

Upvotes: 1

Related Questions