我需要在此蓝图中允许两个子域。在这种情况下,pt和br。我怎样才能做到这一点?据我所知,我只能有一个子域参数。我想将这个功能用于两种语言[pt和br]。
url_for()
我想避开dynamic子域名,因为我不想更改所有import pandas as pd
df = pd.read_csv("test.csv", skiprows=[0], usecols=[0,3,4,5], index_col=False)
df
# Date T3 T4 T5
#0 105/11/01 9.30 9.36 9.27
#1 105/11/02 9.26 9.42 9.23
#2 105/11/03 9.30 9.30 9.20
。
答案 0 :(得分:6)
不要定义当前正在执行此操作的蓝图的前缀和子域名,如下所示进行定义:
mod = Blueprint('landing', __name__)
然后,只需注册蓝图两次,每个子域一个:
app.register_blueprint(mod, subdomain='pt', url_prefix='/')
app.register_blueprint(mod, subdomain='br', url_prefix='/')
修改强>
如OP所述,给定解决方案的问题在于,在模板中使用url_for
时,第一个注册的蓝图将具有优先权。
快速解决方法可能是在注册时做这样的事情:
app.register_blueprint(mod, subdomain='br')
mod.name = 'landing_pt'
app.register_blueprint(mod, subdomain='pt')
请注意,这样做的顺序很重要(首先注册一个,然后更改名称,然后注册另一个)。
然后,要让url_for
按预期在两个子域中工作,请务必使用url_for('.index')
,而不是url_for('landing.index')
,而不是select TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
from INFORMATION_SCHEMA.COLUMNS,
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
。
通过更改第二次注册的蓝图名称,我们欺骗Flask,认为这是一个不同的蓝图。
建议欢迎更好地采用这种肮脏的解决方法。