2016-12-18 1 views
0

ID, 이름, 가격 및 재고 수준을 포함하는 항목 목록이있는 페이지가 있습니다. 이 정보는 SQLite3 데이터베이스에서 가져와 테이블의 페이지에 입력됩니다. 테이블에는 사용자가 항목을 추가하거나 제거 할 수있는 열도 있습니다.파이썬 병 - 양식 새로 만들기/새로 고침 할 때마다 기능 반복

이 코드는 테이블의 부분을 보여줍니다

% for i in items: 
<tr> 
    <th scope="row">{{i[0]}}</th> 
    <td>{{i[1]}}</td> 
    <td>{{i[2]}}</td> 
    <td>{{i[3]}}</td> 
    <td><form method="post" action="/worker"><input type="number" name="newStock.{{i[0]}}"><input style="margin-left: 5px" type="submit" Value="Submit"></form></td> 
</tr> 
% end 

을 그리고 여기이 페이지

@route('/worker', method='GET') 
def workerPage1(): 
    return template('worker', items=store.printItems(2)) # 1 prints out for shoppers, 2 prints out for workers. 

@route('/worker', method='POST') 
def workerPage2(): 
    # allows to receive ItemId 
    for k in request.forms: 
     if k.startswith('newStock.'): 
      itemId = k.partition('.')[-1] 
      numStock = request.forms.get(k) 
      store.updateStock(itemId,numStock) # this accesses the database, updating the stock level 

    return template('worker', items=store.printItems(2)) 

내가 얻고 문제에 대한 파이썬 병 코드이라고 나는 주식을 입력 할 때 예를 들어 '8'이라고 말하면 괜찮습니다. 그런 다음 페이지를 새로 고침하면 페이지 8이 새로 추가됩니다. 따라서 22시에 주식을 추가하기 위해 제출을 클릭하면 30으로 갈 것이고 페이지를 새로 고치면 38 등으로 갈 것입니다.

어떻게 이런 일이 발생하지 않게 할 수 있습니까?

감사합니다.

답변

0

return template('worker', items=store.printItems(2)) 대신 workerPage2()return redirect('worker')을 사용했습니다. 내가 원하는대로 작동합니다.

관련 문제