Flask Application:添加条件以检查 html 模板文件中的环境

Posted

技术标签:

【中文标题】Flask Application:添加条件以检查 html 模板文件中的环境【英文标题】:Flask Application : add condition to check for environment in html template file 【发布时间】:2021-10-11 00:47:58 【问题描述】:

我正在我的 Flask 应用程序中以 <iframe> 呈现应用程序。

本地主机链接是http://localhost:8000/dashboard2/,并将其推送到AWS Elastic Beanstalk,托管在:http://server-name.elasticbeanstalk.com/dashboard2

我的应用程序是用 python 编写的,dashboard.html jinja 模板呈现应用程序。

dashboard.html的内容:

% extends "base.html" %

% block content %

<div class="embed-responsive embed-responsive-16by9">

  <iframe loading="lazy" class="embed-responsive-item" src="http://localhost:8000/dashboard/"  ></iframe>

</div>
% endblock %

问题是,我如何检查环境类型 os 并在 localhostproduction 上呈现应用程序?我需要在.html 模板中执行此操作。

有没有办法访问和打印jinja模板中的环境?

【问题讨论】:

【参考方案1】:

我会在运行应用程序时设置一个环境变量,指定应用程序应该以development 还是production 模式运行:

FLASK_ENV=production flask run

然后在您的模板文件中,您可以通过应用程序的config 访问环境并根据值呈现不同的内容:

<div>
  % if config["ENV"] == 'production' %
    Production content...
  % else %
    Development content...
  % endif %
</div>

【讨论】:

对于生产,我不“运行”应用程序,它部署在环境中。我会在脚本中的某个地方需要这个条件。 @kms 这种区别并不重要。只要以某种方式设置环境变量,这种方法就可以工作。我对elasticbeanstalk不太熟悉,但我发现了这个:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…。 我明白了。我想我的意思是我无法在运行时/在生产中运行应用程序时设置环境。所以,我需要在脚本中的某个地方设置它并在 jinja 模板中检查它。

以上是关于Flask Application:添加条件以检查 html 模板文件中的环境的主要内容,如果未能解决你的问题,请参考以下文章

在添加Flask,SQLAlchemy之前检查表中的行中的值是不是已经存在

我是否必须锁定Blueprint实例以避免Flask中的竞争条件?

检查视图元素是不是以编程方式添加到布局中

是否可以扩展 Flask-restless 以添加新路线?

Flask-SQLAlchemy 检查表中是不是存在行

Flask-restful:如何只响应附带的请求('Accept':'application/json')?