Flask在Google App Engin上找不到蓝图模板

2024-05-15 03:00:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python模块,它的蓝图是这样的。。。你知道吗

import os
from flask import Blueprint


LIBRARY_BASE_DIR = os.path.dirname(os.path.abspath(__file__))
TEMPLATE_BASE_DIR = os.path.join(LIBRARY_BASE_DIR, 'templates')
STATIC_BASE_DIR = os.path.join(LIBRARY_BASE_DIR, 'static')


BulmaBase = Blueprint(
    'bulma',
    __name__,
    url_prefix='/bulma',
    static_url_path='/bulma-static',
    static_folder=STATIC_BASE_DIR,
    template_folder=TEMPLATE_BASE_DIR,
)

注册到不同模块中的Flask应用程序routes.py

app = Flask(__name__)
app.register_blueprint(BulmaBase)

蓝图有一个基础模板,我想在多个应用程序中扩展。你知道吗

{% extends 'bases/bulma/bulma.html' %}

一个main.py文件通过WSGI运行应用程序。googleappengineapp.yaml文件没有列出入口点(因此应该使用默认值,主:应用程序). 你知道吗

application.run(host='127.0.0.1', debug=DEBUG)

在本地运行时,所有这些都能正常工作。但是,在googleappengine上运行时,无法找到蓝图中的模板。如果我禁用蓝图,应用程序会再次在GAE上运行。你知道吗

jinja2.exceptions.TemplateNotFound: bases/bulma/bulma.html
at _get_source_fast (/env/lib/python3.7/site-packages/flask/templating.py:86)
at get_source (/env/lib/python3.7/site-packages/flask/templating.py:58)
at load (/env/lib/python3.7/site-packages/jinja2/loaders.py:113)
at _load_template (/env/lib/python3.7/site-packages/jinja2/environment.py:804)
at get_template (/env/lib/python3.7/site-packages/jinja2/environment.py:830)
at root (/srv/auth_app/templates/BASE.html:11)
at root (/srv/auth_app/templates/login__firebase_ui.html:14)
at render (/env/lib/python3.7/site-packages/jinja2/environment.py:1005)
at top-level template code (/srv/auth_app/templates/login__firebase_ui.html:1)
at reraise (/env/lib/python3.7/site-packages/jinja2/_compat.py:37)
at handle_exception (/env/lib/python3.7/site-packages/jinja2/environment.py:780)
at render (/env/lib/python3.7/site-packages/jinja2/environment.py:1008)
at render (/env/lib/python3.7/site-packages/jinja2/asyncsupport.py:76)
at _render (/env/lib/python3.7/site-packages/flask/templating.py:117)
at render_template (/env/lib/python3.7/site-packages/flask/templating.py:135)
at login (/srv/auth_app/routes.py:64)
at dispatch_request (/env/lib/python3.7/site-packages/flask/app.py:1799)
at full_dispatch_request (/env/lib/python3.7/site-packages/flask/app.py:1813)
at reraise (/env/lib/python3.7/site-packages/flask/_compat.py:35)
at handle_user_exception (/env/lib/python3.7/site-packages/flask/app.py:1718)
at full_dispatch_request (/env/lib/python3.7/site-packages/flask/app.py:1815)
at wsgi_app (

我不知道如何解决这个问题。最后,我只希望有一个共享的可扩展模板(带有捆绑资产),多个其他人可以在自己的应用程序中进行扩展。任何指点都将不胜感激。你知道吗


Tags: pathpyenvapp应用程序jinja2flaskbase
1条回答
网友
1楼 · 发布于 2024-05-15 03:00:24

在将googleappengine服务从标准环境升级到灵活环境之后,这不再是一个问题。你知道吗

docs-

Apps in the flexible environment can serve static files from a Google Cloud Platform option like Cloud Storage, serve them directly, or use a third-party content delivery network (CDN).

失败的地方在于标准环境不允许从外部库访问/写入非运行时文件;除非在app.yaml中指定了特定的静态文件夹,否则只能使用tmp文件夹。如果应用程序试图使用外部库中的任何模板,则这会显示为在文件系统中查找模板时出错。你知道吗

简言之,如果您有外部库,并且希望在生产中使用来自它们的模板/静态文件(例如使用FlaskBlueprint),那么GAE标准环境将无法正常工作。你知道吗

相关问题 更多 >

    热门问题