Flask 找不到应用程序文件
Flask can't find applications file
我有一个独立的应用程序,它接受一个 excel 文件并输出一个 word 文档。这作为独立工作很好。
我现在尝试将其集成到 Flask 应用程序中,但 Flask 无法找到我的应用程序的子文件夹 "templates"。这是我的文件结构:
my_flask_site
├── flask_app.py
├── __init__.py
├── templates
| ├── index.html
| └── report.html
├── uploads
| └── myfile.xlsx
|
└── apps
└── convert_app
├── __init__.py
├── main.py
├── report
| ├── __init__.py
| ├── data_ingest.py
| └── report_output.py
└── templates
└── output_template.docx
现在我无法获取 report_output.py 文件来查找 output_template.docx 文件,现在它在 flask 应用程序中。
def run_report(file):
data = data_ingest.Incident(file)
priority_count = dict(data.df_length())
size = sum(priority_count.values())
print(priority_count)
print(size)
report = report_output.Report()
report.header()
report.priority_header(0)
i = 0
if '1' in priority_count:
for _ in range(priority_count['1']):
field = data.fields(i)
report.priority_body(field)
i += 1
report.break_page()
report.priority_header(1)
else:
report.none()
report.priority_header(1)
if '2' in priority_count:
for _ in range(priority_count['2']):
field = data.fields(i)
report.priority_body(field)
i += 1
report.break_page()
report.priority_header(2)
else:
report.none()
report.break_page()
report.priority_header(2)
if '3' in priority_count:
for _ in range(priority_count['3']):
field = data.fields(i)
report.priority_body(field)
i += 1
report.break_page()
if '4' in priority_count:
for _ in range(priority_count['4']):
field = data.fields(i)
i += 1
output = OUTPUT_FILE+f"/Platform Control OTT Daily Report {data.field[0]}.docx"
report.save(output)
print(f"Report saved to:\n\n\t {output}")
def main(file):
run_report(file)
if __name__ == "__main__":
main()
这里是 report_output.py(没有字格式部分):
from docx import Document
class Report(object):
def __init__(self):
self.doc = Document('./templates/pcc_template.docx')
self.p_title = ['Major Incident',
'Stability Incidents (HPI)',
'Other Incidents']
self.date = datetime.now().strftime('%d %B %Y')
def save(self, output):
self.doc.save(output)
format_report.py文件里还有很多,不过是跟app的功能有关。我被卡住的地方是我如何让应用程序再次看到它自己的模板文件夹和其中的模板文件。
在 找到这个post 后,我的问题就解决了。
我从这里得到的是文件路径必须是 Flask 应用程序根文件夹的绝对路径,在本例中 "my_flask_site" 是根文件夹,添加完整文件路径解决了问题。
我有一个独立的应用程序,它接受一个 excel 文件并输出一个 word 文档。这作为独立工作很好。
我现在尝试将其集成到 Flask 应用程序中,但 Flask 无法找到我的应用程序的子文件夹 "templates"。这是我的文件结构:
my_flask_site
├── flask_app.py
├── __init__.py
├── templates
| ├── index.html
| └── report.html
├── uploads
| └── myfile.xlsx
|
└── apps
└── convert_app
├── __init__.py
├── main.py
├── report
| ├── __init__.py
| ├── data_ingest.py
| └── report_output.py
└── templates
└── output_template.docx
现在我无法获取 report_output.py 文件来查找 output_template.docx 文件,现在它在 flask 应用程序中。
def run_report(file):
data = data_ingest.Incident(file)
priority_count = dict(data.df_length())
size = sum(priority_count.values())
print(priority_count)
print(size)
report = report_output.Report()
report.header()
report.priority_header(0)
i = 0
if '1' in priority_count:
for _ in range(priority_count['1']):
field = data.fields(i)
report.priority_body(field)
i += 1
report.break_page()
report.priority_header(1)
else:
report.none()
report.priority_header(1)
if '2' in priority_count:
for _ in range(priority_count['2']):
field = data.fields(i)
report.priority_body(field)
i += 1
report.break_page()
report.priority_header(2)
else:
report.none()
report.break_page()
report.priority_header(2)
if '3' in priority_count:
for _ in range(priority_count['3']):
field = data.fields(i)
report.priority_body(field)
i += 1
report.break_page()
if '4' in priority_count:
for _ in range(priority_count['4']):
field = data.fields(i)
i += 1
output = OUTPUT_FILE+f"/Platform Control OTT Daily Report {data.field[0]}.docx"
report.save(output)
print(f"Report saved to:\n\n\t {output}")
def main(file):
run_report(file)
if __name__ == "__main__":
main()
这里是 report_output.py(没有字格式部分):
from docx import Document
class Report(object):
def __init__(self):
self.doc = Document('./templates/pcc_template.docx')
self.p_title = ['Major Incident',
'Stability Incidents (HPI)',
'Other Incidents']
self.date = datetime.now().strftime('%d %B %Y')
def save(self, output):
self.doc.save(output)
format_report.py文件里还有很多,不过是跟app的功能有关。我被卡住的地方是我如何让应用程序再次看到它自己的模板文件夹和其中的模板文件。
在
我从这里得到的是文件路径必须是 Flask 应用程序根文件夹的绝对路径,在本例中 "my_flask_site" 是根文件夹,添加完整文件路径解决了问题。