python - 发出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})
解决方案
如果 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})
推荐阅读
- ios - 如何在 appdelegate 中获取传递的通知详细信息
- directx - IDXGIFactory 和其他 IDXGIFactory 版本有什么区别?
- c++ - 接口和实现 C++
- r - 使用 R h2o 加载数据集
- nlp - NLP(自然语言处理)如何用任何方法检测问题?
- android - 当我单击底部表中的按钮时,我的应用程序停止
- r - R:查找类似/“重复”的文本数据对
- assembly - 将字符串上的 movzbl 写入寄存器
- javascript - 单击 NextJS 的按钮时,服务器端在 React 中呈现模式
- java - java ice4j 与 nist-sdp 包冲突