【问题标题】:Flask can't find applications file [duplicate]Flask找不到应用程序文件[重复]
【发布时间】:2018-11-27 13:40:10
【问题描述】:

我有一个独立的应用程序,它接收一个 excel 文件并输出一个 word 文档。这可以作为独立的工作正常。

我现在尝试将其集成到 Flask 应用程序中,但 Flask 找不到我的应用程序的子文件夹“模板”。这是我的文件结构:

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 文件,它现在位于烧瓶应用程序中。

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(没有word格式部分):

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 python-import filepath


【解决方案1】:

Refering to a directory in a Flask app doesn't work unless the path is absolute 找到此帖子后,我已经解决了我的问题。

我从中得到的是,文件路径必须是 Flask 应用程序根文件夹的绝对路径,在这种情况下,“my_flask_site”是根文件夹,添加完整文件路径可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 2016-12-29
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多