我是Django的新手和一般的网络编程,请不要让答案太复杂。我已经在这里查阅了文档和问题,但我无法理解它。
我有一个表单,在验证并将模型保存到数据库后,我想将用户重定向到新页面。我的问题是,我如何正确地使用HttpResponseRedirect(甚至是快捷方式重定向),因为它正确地重定向视图,url模式被调用但是当它到达views.py中的视图时会出现数组。为什么模板不会改变但是视图会改变?
有人可以告诉我哪里错了,以及如何解决?
views.py
class CreateSuccess(generic.ListView):
template_name = 'login/successReg.html'
def CreateUser(request):
if request.method == "POST":
form = CreateUserForm(request.POST)
if form.is_valid():
newUser = form.save()
return HttpResponseRedirect('sucess/')
else:
form = CreateUserForm()
return render(request, 'login/addUser.html', {'form':form})
urls.py
urlpatterns = patterns('',
url(r'^$', views.LoginIndex.as_view(), name='loginIndex'),
url(r'^create/', views.CreateUser, name='addUser'),
url(r'^authenticate/', views.LoginUser.as_view(), name='loginUser'),
url(r'^create/success/', views.CreateSuccess.as_view(), name='successReg'),
)
答案 0 :(得分:2)
尝试返回构建所需网址的reverse()
对象
if form.is_valid():
newUser = form.save()
url = reverse('your_app:successReg') # Replace your_app with the name of your app
return HttpResponseRedirect(url)
reverse()
的更多信息: reverse(viewname)
views.py
中将viewname设为现有函数,或者通过urls.py
始终建议以reverse('app_name : name_defined_in_urls')
注意:由于您是初学者,我删除了如果您想将用户重定向到动态网页时使用的可选args and kwargs
参数