如何将参数从一个视图传递到另一个视图

问题描述:

我无法实现这个功能:我导航到了我想要的页面,但是我看起来似乎在做错误的变量。如何将参数从一个视图传递到另一个视图

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?

+3

当您提交表单时,不会发送标签元素的内容。 – professorsloth 2013-03-04 20:14:42

+0

看来你不仅是新来的金字塔,但对HTML/HTTP也 – bismigalis 2013-03-05 08:31:14

+0

请修复缩进。 – 2013-03-05 08:37:46

一个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)。 你可以从网址中获取数据并传递到另一个页面。