这是我的urls.py:
urlpatterns = patterns('horizon.views',
url(r'home/$', 'user_home', name='user_home'),
url(r'register/$', Register.as_view(), name='register'),
url(r'success/$', Success.as_view(), name='success')
)
这是我的views.py:
class Register(forms.ModalFormView):
template_name = 'auth/test.html'
form_class = CreateUser
success_url = reverse_lazy('login')
class Success(generic.TemplateView):
template_name = 'auth/success.html'
我尝试使用:
return HttpResponseRedirect('success')
或
return HttpResponseRedirect(reverse('success'))
但它无法呈现success.html。谁能告诉我为什么?非常感谢!
答案 0 :(得分:1)
请发布您遇到的确切错误。
在执行HttpResponseRedirect
时,最好不要像'/ success /'那样对网址进行硬编码。
而是这样做:
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
....
# Here 'success' is the URL name you have given.
return HttpResponseRedirect(reverse('success'))
这样,如果您更改成功网址(不是您应该...),它会自动更新整个应用,而不必返回并更改所有硬编码值。
在Django Reverse resolution of URLs文档中了解更多相关信息。