我想将与我的蓝图相关联的模板文件夹替换为我的Flask应用程序。我尝试过以下方法:
from flask import current_app as app
bp = Blueprint('myblueprint', __name__, template_folder='templates/en', url_prefix='/<lang_code>')
@bp.before_request
def verify_language():
# check if there are any parameters in the url and get lang_code
url_params = request.view_args
lang = (url_params and url_params.pop('lang_code', None)) or None
# if lang_code is given, make sure it is valid
if lang in ['en', 'fi']:
if lang == 'fi':
app.blueprints["myblueprint"].template_folder = 'templates/fi'
else:
app.blueprints["myblueprint"].template_folder = 'templates/en'
g.lang_code = lang
else:
return jsonify({"error": "Invalid Parameters (lang_code)"})
@bp.url_defaults
def add_language_code(endpoint, values):
values.setdefault('lang_code', g.lang_code)
我在&#34; templates / en&#34;下面有类似名称的.html文件。和&#34; templates / fi&#34;文件夹,但网站文本已被翻译成两种不同语言的明显例外。
当我进入我的网站时,这种方法有效,但随后它停止工作。所以,一旦我进入我的网站并将url-prefix lang_code更改为&#34; fi&#34;,我会看到我的芬兰网站,但代以&#34; en&#34;在网址中不再显示我的英文网站。
我认为这与Flask将Blueprint模板文件夹添加到应用程序的搜索路径,然后找到&#34; X.html&#34;的第一个匹配项有关。我在我的
return render_template('X.html')
有没有办法真正替代注册到应用程序的Blueprint模板文件夹,即在添加另一个时删除第一个?