How can I pass parameters from one view to another

﹥>﹥吖頭↗ 提交于 2019-12-11 20:41:04

问题


I can't get this to work: I navigate to the page I want, but I'm doing something wrong with the variables it seems.

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>

I can show all the variables of page in my table. But when I press the submit button I can't get the content of the "name" label to my diagnose page. I don't know how I can show the value.

ps: question is based on this post: Pyramid app: How can I pass values into my request.route_url?


回答1:


a sollution is working with url dispatching like this:

_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']

now you have your id from one view to another.




回答2:


Instead of you'd need an input of some sort:

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

or type="hidden" if you don't want it displayed.

I'm still learning Pyramid as well, but I also wonder if from your code that the submit action is going to post to def hoofdpagina anyway. I think you might have to move your POST handling to:

@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))



回答3:


In the init.py you have to add url dispatching (config.add_route). Your can get the data out of the url and pass on to another page like this.



来源:https://stackoverflow.com/questions/15210203/how-can-i-pass-parameters-from-one-view-to-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!