我有一個燒瓶應用程序,我在這裏做一些數據的分析,並根據這些數據繪製一些圖。但是直到現在,我一直在我的view.py文件中執行分析和繪製圖形,在我的索引方法中。這不是很好,因爲每次我在瀏覽器中執行「刷新」時,都會重做整個分析並繪製所有圖形。是否可以從views_py中的__init__.py導入變量?
我的項目結構如下:
Data Analysis/
- app/
- static/
- templates/
- base.html
- index.html
- __init__.py
- models.py
- views.py
- venv/
- run.py
- config.py
我想我的數據分析移動到我的__init__.py模塊,因爲這將導致只有一次運行應用程序計算所需的數據,而不是重新運行的它在每一次刷新。我遇到的障礙實際上是從我的__init__.py模塊中導入我需要的數據在我的views.py模塊中。
這是如何完成的?
我已經試過如下:
__init__.py
from flask import Flask, url_for, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
def do_data_analysis():
#... lots of calculations
return data
VALUES = do_data_analysis()
views.py
from app import app, models, __init__ #does not work
from __init__ import VALUES #does not work
import VALUES #does not work
from app import VALUES # does not work
VALUES = __init__.VALUES #does not work
是否有這樣做的另一個也許更合適的方法是什麼?
編輯:
我已經成功地得到它的工作通過創建一個模塊(data_analysis.py
),其中我執行我的所有數據的分析。但這也意味着,在我的__init__.py
我已刪除了我的數據分析,我現在不是在我的view.py
如下:
from app import data_analysis
現在我可以這樣做:
GPSVALUES = data_analysis.VALUES
#do something with the values..
但它確實似乎兩次運行腳本。首先在我的時。它似乎只在啓動run.py
啓動。然後當第一個請求進入run.py
時運行腳本。如果頁面被刷新,它不會重新運行我首先想要的腳本。因此,我想我會用此溶液去除非沒有其他的解決方案的用武之地。(我會盡快添加一個答案,因爲我已經做了一些更多的測試)
你的前提是有缺陷的。 '__init__'中的代碼沒有任何意義,這意味着它只能運行一次;您可以通過將其設置爲views.py中的模塊級別來獲得相同的效果。 –
如果我要在與我的views.py相同的文件夾級別創建用於我的數據分析的輔助模塊,則需要在某處運行它。如果我在我的views.py中運行它,它並不能真正解決我的問題。 – Zeliax
是的,如果你在模塊級運行它。 –