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

0 投票
3 回答
891 浏览
提问于 2025-04-17 17:54

我这边有个问题搞不定:我能顺利打开我想要的页面,但好像在处理变量的时候出错了。

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>

我可以在我的表格里显示页面的所有变量。但是当我按下提交按钮时,我无法把“name”标签的内容传到我的诊断页面。我不知道该怎么显示这个值。

ps: 这个问题是基于这个帖子:Pyramid应用:我该如何将值传递到我的请求.route_url中?

3 个回答

0

在init.py文件里,你需要添加网址分发功能(config.add_route)。这样你就可以从网址中获取数据,并把这些数据传递到另一个页面。

1

你需要某种输入,而不是直接使用:

<input type="text" name="name" value="et werkt slet">

如果你不想让它显示出来,可以使用type="hidden"。

我也在学习Pyramid,不过我在想,从你的代码来看,提交的动作是不是会直接发送到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))
0

这个解决方案是通过网址分发来工作的,具体是这样的:

_init_.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']

现在你可以在一个视图中获取到另一个视图的ID了。

撰写回答