首页 > 解决方案 > 发出httpresponseredirect:无法重定向到主页

问题描述

要么我弄错了代码,要么它一直在无限循环中运行,我一直在错误地重定向这个重定向。

urls.py 第一个应用程序


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

urls.py 主要

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


urls.py 帐户(第二个应用程序)

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

视图.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})

标签: pythonhtmldjango

解决方案


如果 POST 请求不成功,您将创建一个新表单。您应该保留旧表单,以便显示错误。因此,您应该更改逻辑,以便仅在请求不是 POST 请求的情况下创建新表单:

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})

推荐阅读