我有一個 Django 專案。我使用 nginx gunicorn。views.py 檔案有一個 combine_data() 函式,它創建并回傳一個 HTML 頁面。如您所見,我在“行”中傳遞物件,在“時間”中傳遞當前日期。

回傳物件的函式如下所示

問題是在這個函式中,reporting_date 總是得到它第一次被呼叫時得到的值。例如,我執行“sudo systemctl restart gunicorn”并在瀏覽器中打開此頁面。報告日期將等于今天。如果我明天打開頁面,reporting_date 不會改變它的值。
最初,我假設 datetime.date.today () 不能正常作業,所以我在 views.py (第一個螢屏)中添加了“時間”引數,但那里的日期總是正確的。然后我認為get_combined()函式(第二屏)的引數的默認值被某種方式快取了,所以我添加了r_int引數,它接收一個隨機值,但是這里一切正常。r_int 總是得到一個新值。
現在,我必須每天呼叫“sudo systemctl restart gunicorn”以使頁面正常作業((
任何想法如何解決這個問題?謝謝
uj5u.com熱心網友回復:
引數的默認值reported_date是函式第一次匯入時的值。你應該做類似的事情
def get_combined(reported_date=None, ...):
reported_date = reported_date or datetime.datetime.today()
...
uj5u.com熱心網友回復:
代替
def get_combined(reported_date=datetime.datetime.today()):
利用
def get_combined():
reported_date = datetime.datetime.today()
我試過的: -
>>> def c(day = datetime.today()):
print(day)
>>> c()
>>> 2022-10-27 15:44:57.593444
>>> c()
>>> 2022-10-27 15:44:57.593444
>>> def c():
day = datetime.today()
print(day)
>>> c()
>>> 2022-10-27 15:56:02.459517
>>> c()
>>> 2022-10-27 15:56:04.630902
正如@OldBill 提到的:當您為函式引數宣告默認值時,它會被評估一次,而不是每次呼叫函式時
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521231.html
