我有一個Django應用程序,它有點像一個網上商店。在應用中,POST是在一個名爲posthandler.py這樣Django,在呈現模板之前執行templatetag
{% load posthandler %}
{% posthandler %}
在那種總是加載中的index.html templatetag處理。在此之後,該文件中有這樣的
{% block primary %}{% endblock %}
主位現在,這主要位顯示一個值,股票,這就有可能在posthandler位進行了調整。意思是,價值可能是陳舊的。這具有人物點擊物品的作用,將其添加到他們的訂單列表中,但是在庫存值正確地反映數據庫中的值之前需要兩次刷新的頁面。
我認爲這是因爲模板標籤被處理的順序,就像這樣;
- 用戶點擊按鈕添加通過視圖orderlist
- 頁面將重新加載,首先呈現在index.html中的股票價值基於什麼是目前在DB
- 的posthandler.py運行,從其減去一個來自股票,所以數據庫現在是最新的。
- 頁面顯示錯誤的編號,因爲該值是在調整前從數據庫中檢索的。
我認爲要處理該視圖中的帖子,但我希望同一個處理程序可以在所有不同的頁面上運行,所以看起來似乎沒有辦法。有一個更好的方法嗎?或者,我可以讓主塊在模板標籤之後執行嗎?
我沒有這樣一個頁面,因爲我沒有真正想到這一點。我會研究中間件。 – Eloque
擁有專門用於接收和處理此POST請求的單個頁面似乎是要走的路。它會更清晰,更容易,並且會節省檢查請求方法的開銷,並且在它爲POST的情況下,檢查提交的表單是否是您想要處理的表單。 –
我有點想要這個過程是透明的。也許以後甚至沒有重新加載。您建議的中間件解決方案目前工作良好。謝謝。 – Eloque