这是我的django app.i的views.py的片段,它使用了modelform来创建表单。 models.py有一个具有attibute用户名的类用户。我想将注册页面重定向到视图“重定向”,但我还想传递在我们点击表单上的提交按钮后获得的用户名,数据存储在实例'new_form'中。
def registration(request):
if request.method=='POST':
form=userForm(request.POST)
if form.is_valid():
name=form.cleaned_data['username']
new_form=form.save()
return HttpResponseRedirect(reverse('redirect'))
else:
form=userForm()
return render(request,'student/registration.html',{'form':form})
我的redirect.html看起来像这样。
<h1>You have signed up.</h1>
<p>hello {{field.name}}</p>
但问题是hello之后没有显示名称,这是显而易见的,因为我没有通过reverse('redirect')传递任何东西。那我该怎么做?我的redirect.html也有问题吗?
答案 0 :(得分:2)
而不是return HttpResponseRedirect(reverse('redirect'))
。
使用return render(request, 'redirect.html', {'name': name})
。
并修改redirect.html
至
<h1>You have signed up.</h1>
<p>hello {{name}}</p>
希望这有帮助。
答案 1 :(得分:1)
制作一个上下文字典并发送。
def registration(request):
context ={}
if request.method=='POST':
form=userForm(request.POST)
if form.is_valid():
name=form.cleaned_data['username']
context['name']=name
new_form=form.save()
return render(request,'student/registration.html',context)
else:
form=userForm()
context['form']=form
return render(request,'student/registration.html',context)
现在 html
<h1>You have signed up.</h1>
<p>hello {{name}}</p>