2017-11-13 2 views
0

Jinja2 템플릿과 함께 Python Pyramid를 사용하고 있습니다. 양식 데이터를 세션에 저장하고 다른 HTML 페이지에서 가져 오려고합니다. 데이터를 전달하기 위해 어떻게 변경해야합니까? View121에서 키를 저장하는 방법을이 request.session['postal'] = 01934과 같은 세션으로 만 알고 있지만 이는 Delivery.jinja2의 키가 아닙니다. print (session['postal'])을 사용하면 내 명령 프롬프트에만 표시되지만 HTML 페이지에는 표시되지 않습니다. 누구든지 나를 도울 수 있습니까? 나는 이것에 초보자입니다.Python Pyramid - 세션을 사용하여 양식 데이터를 다른 페이지로 전달

내 Views.py에 추가/변경 사항은 무엇인가요?

내 HTML : Delivery.jinja2

<form class="form-horizontal" method="POST"> 
<div class="form-group"> 
    <label class="control-label col-md-2" for="postal">Postal Code:</label> 
     <input type="text" class="form-control" id="postal" placeholder="Enter Postal Code" name="postal" /> 
</div> 
<div class="form-group"> 
    <label class="control-label col-md-2" for="address">Detailed Address:</label> 
     <textarea class="form-control" rows="3" id="address" placeholder="Enter Address" name="address"></textarea> 
</div> 
<div class="form-group"> 
    <label class="control-label col-md-2" for="unit">Unit No #:</label> 
     <input type="text" class="form-control" id="unit" placeholder="Enter Unit No" name="unit" /> 
</div> 
<button type="submit" class="btn btn-default" name="submit">Submit</button> 
</form> 

Views.py

@view_config(route_name='deliveryLink', renderer='templates/deliveryLink.jinja2') 
def deliveryLink(request): 
    print("YAY for gift delivery via Link") 

if 'submit_deliverylink' in request.POST: 
    print("request.POST: ", request.POST) 

    myform = request.POST 

    for m in myform: 
     print("key: ", m, " value: ", myform[m]) 

    session = request.session 

    session['postal'] = ? 
    session['address'] = ? 
    session['unit'] = ? 

    data = "??" 

    data_array = data.split(",") 
    session['data'] = data_array 

    session['delivery'] = str(data_array) 

    print (session['delivery']) 

    return HTTPFound(location='http://localhost:5555/confirmation') 
return {} 

@view_config(route_name='confirmation', renderer='templates/confirmation.jinja2') 
def confirmation(request): 
    print("YAY for confirmation") 

     for a in request.POST: 
      request.session[a] = request.POST[a] 

    return {} 

나는 데이터가이 확인 페이지에 표시 할 이전에 입력합니다 : Confirmation.jinja2

<form class="form-horizontal" method="POST"> 
    <div class="form-group"> 
     <label class="control-label col-md-2" for="postal">Postal Code:</label> 
      <input type="text" class="form-control" id="postal" name="postal" /> 
    </div> 
    <div class="form-group"> 
     <label class="control-label col-md-2" for="address">Detailed Address:</label> 
      <textarea class="form-control" rows="3" id="address" name="address"></textarea> 
    </div> 
    <div class="form-group"> 
     <label class="control-label col-md-2" for="unit">Unit No #:</label> 
      <input type="text" class="form-control" id="unit" name="unit" /> 
    </div> 
    </form> 

답변

0

제 생각에, 초기 양식에서 POST없이 확인 페이지의 템플리트로 전달할 수 있습니다.

당신이 세션을 필요 어쨌든 경우 템플릿

<input type="text" class="form-control" id="postal" name="postal" value="{{session['postal']}}" />


# after form submitted, it sends post request, just check if it exist 
if request.POST: 
    print("request.POST: ", request.POST) 

    myform = request.POST 
    # you need iterate over keys for this case 
    for m in myform.keys(): 
     print("key: ", m, " value: ", myform[m]) 

    session = request.session 
    # you can access request.POST directly or use your variable myfrom 
    # use myform.get('postal','') to get value by key 
    session['postal'] = myform.get('postal','') 
    session['address'] = myform.get('postal','') 
    session['unit'] = myform.get('unit','') 

    data = "??" 

    data_array = data.split(",") 
    session['data'] = data_array 

    session['delivery'] = str(data_array) 

    print (session['delivery']) 

    return HTTPFound(location='http://localhost:5555/confirmation') 
+0

안녕, 답장을 보내 주셔서 감사에서 호출 할 수 있습니다! 이 선은 어떻게 작동해야합니까? 'session [ 'postal'] =?'폼의 데이터를 얻기 위해서? –

+0

내 대답을 편집하고 의견을 작성하고 코드에 약간 추가했습니다. 나는 Python Pyramid와 함께 작업하지 않았고, 변수'data'에 대해 무엇이 있어야하는지 확신하지 못했습니다. – SAZ

관련 문제