Django HttpResponseRedirect,它返回 None
Django HttpResponseRedirect, It returned None instead
尝试使用 Django 制作表单并使用 HttpResponseRedirect,我希望这应该相当容易,但我似乎做错了什么。
我一直收到错误消息:
The view hotel.views.hotel_registration didn't return an HttpResponse object. It returned None instead.
在这种情况下,我的猜测是 HttpResponseRedirect
无法正常工作,因为当我删除包含内容的 if
语句时,一切正常,除了我无法提交形式。
我有2个观点:
def hotel_registration(request):
if request.method == 'POST':
form = HotelRegistrationForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('hotel:hotel_registered')
else:
form = HotelRegistrationForm()
return render(request, 'hotel/hotel-registration-form.html', {'form': form})
def hotel_registered(request):
pass
并且在urls.py
url(r'hotel-registratie/', hotel.views.hotel_registration, name='registration'),
url(r'hotel-geregistreerd/', hotel.views.hotel_registered, name='registered'),
这些是我在 HttpResponseRedirect 中使用的所有参数:
HttpResponseRedirect('hotel:hotel_registered')
HttpResponseRedirect('hotel_registered')
HttpResponseRedirect('/hotel_registered/')
HttpResponseRedirect(hotel_registered)
然后我 rust 想重定向回 root:
HttpResponseRedirect('/')
并使用反向:
HttpResponseRedirect(reverse(hotel_registration))
HttpResponseRedirect(reverse('hotel_registration'))
执行此操作的正确方法是什么?
根据您发布的以下 urls.py:
url(r'hotel-registratie/', hotel.views.hotel_registration, name='registration'),
url(r'hotel-geregistreerd/', hotel.views.hotel_registered, name='registered'),
您应该使用以下方法之一进行重定向:
return HttpResponseRedirect('hotel-geregistreerd/')
或
return HttpResponseRedirect(reverse('registered'))
或者干脆
return redirect('registered')
当您使用 HttpResponseRedirect 提供 url 的路径时,如果您使用反向或重定向,您可以使用您在 urls.py.
中定义的名称
尝试使用 Django 制作表单并使用 HttpResponseRedirect,我希望这应该相当容易,但我似乎做错了什么。
我一直收到错误消息:
The view hotel.views.hotel_registration didn't return an HttpResponse object. It returned None instead.
在这种情况下,我的猜测是 HttpResponseRedirect
无法正常工作,因为当我删除包含内容的 if
语句时,一切正常,除了我无法提交形式。
我有2个观点:
def hotel_registration(request):
if request.method == 'POST':
form = HotelRegistrationForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('hotel:hotel_registered')
else:
form = HotelRegistrationForm()
return render(request, 'hotel/hotel-registration-form.html', {'form': form})
def hotel_registered(request):
pass
并且在urls.py
url(r'hotel-registratie/', hotel.views.hotel_registration, name='registration'),
url(r'hotel-geregistreerd/', hotel.views.hotel_registered, name='registered'),
这些是我在 HttpResponseRedirect 中使用的所有参数:
HttpResponseRedirect('hotel:hotel_registered')
HttpResponseRedirect('hotel_registered')
HttpResponseRedirect('/hotel_registered/')
HttpResponseRedirect(hotel_registered)
然后我 rust 想重定向回 root:
HttpResponseRedirect('/')
并使用反向:
HttpResponseRedirect(reverse(hotel_registration))
HttpResponseRedirect(reverse('hotel_registration'))
执行此操作的正确方法是什么?
根据您发布的以下 urls.py:
url(r'hotel-registratie/', hotel.views.hotel_registration, name='registration'),
url(r'hotel-geregistreerd/', hotel.views.hotel_registered, name='registered'),
您应该使用以下方法之一进行重定向:
return HttpResponseRedirect('hotel-geregistreerd/')
或
return HttpResponseRedirect(reverse('registered'))
或者干脆
return redirect('registered')
当您使用 HttpResponseRedirect 提供 url 的路径时,如果您使用反向或重定向,您可以使用您在 urls.py.
中定义的名称