如何将参数从一个视图传递到另一个视图
问题描述:
我无法实现这个功能:我导航到了我想要的页面,但是我看起来似乎在做错误的变量。如何将参数从一个视图传递到另一个视图
views.py:
@view_config(http_cache=1,route_name='hoofdpagina', renderer='templates/hoofdpagina.pt')
def hoofdpagina(request):
page = DBSession.query(MyModel) #.filter_by(id='1').all()
if 'form.submitted' in request.params:
name= request.params['name']
page2=Page(name)
DBSession.add(page2)
return HTTPFound(location=request.route_url('view_page',pagename=name))
return dict(page=page)
@view_config(route_name='diagnose', renderer='templates/diagnose.pt')
def diagnose(request):
return request
kak = ['test1','test2','test3t']
content = {"test1","test2","test3"}
return {'content' :content, 'test' :kak}
hoofdpagina.pt:
<form class="span12" action="/diagnose" method="POST">
<table class="table table-hover">
<thead class="header">
<tr>
<th>D Nr.</th>
<th>Datum</th>
<th>Patient</th>
<th>Prior</th>
</tr>
</thead>
<tr tal:repeat="Page page" >
<td tal:content="Page.dosiernummer"></td>
<td tal:content="Page.dosiernummer"></td>
<td tal:content="Page.datum"></td>
<td tal:content="Page.naamPatient"></td>
<td tal:content="Page.prioriteit"></td>
</tr>
</table>
</form>
<form action="/diagnose" method="post">
<input type="submit" value="Save" name="form.submitted" ></input>
<label name="name">et werkt slet</label>
</form>
我可以显示网页的所有变量在我的表。但是当我按下提交按钮时,我无法将“名称”标签的内容获取到我的诊断页面。我不知道如何显示价值。
PS:问题是根据这个帖子:Pyramid app: How can I pass values into my request.route_url?
答
一个sollution正在与URL调度这样的:
_ 初始化 _.py:
config.add_route('diagnose1', '/diagnose1/{dosierid}')
views.py
@view_config(route_name='diagnose1', renderer='templates/diagnose.pt')
def diagnose1(request):
tabeldata=''
dosierid = request.matchdict['dosierid']
现在你已经你的身份从一个视图到另一个视图。
答
的你反而会需要某种形式的输入:
<input type="text" name="name" value="et werkt slet">
或键入=“隐藏”如果你不希望显示。
我还在学金字塔,但我也想知道,如果从你的代码中提交的动作会发布到def hoofdpagina无论如何。我想你可能不得不将你的POST处理移动到:
@view_config(route_name='diagnose', renderer='templates/diagnose.pt')
def diagnose(request):
if 'form.submitted' in request.params:
name= request.params['name']
page2=Page(name)
DBSession.add(page2)
return HTTPFound(location=request.route_url('view_page',pagename=name))
答
在init.py中,你必须添加url调度(config.add_route)。 你可以从网址中获取数据并传递到另一个页面。
当您提交表单时,不会发送标签元素的内容。 – professorsloth 2013-03-04 20:14:42
看来你不仅是新来的金字塔,但对HTML/HTTP也 – bismigalis 2013-03-05 08:31:14
请修复缩进。 – 2013-03-05 08:37:46