尝试使用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)
然后我生锈了想重定向回root:
HttpResponseRedirect('/')
使用反向:
HttpResponseRedirect(reverse(hotel_registration))
HttpResponseRedirect(reverse('hotel_registration'))
这样做的正确方法是什么?
答案 0 :(得分:1)
根据您发布的以下urls.py:
n_sentence, n_element
您应该使用以下方法之一进行重定向:
sorted
或
url(r'hotel-registratie/', hotel.views.hotel_registration, name='registration'),
url(r'hotel-geregistreerd/', hotel.views.hotel_registered, name='registered'),
或只是
return HttpResponseRedirect('hotel-geregistreerd/')
当您使用HttpResponseRedirect提供网址的路径时,如果您使用反向或重定向,则可以使用您在urls.py中定义的名称。