Reputation: 162
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
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