我使用Flask的 它的危险 来生成加密的网址。它真棒,但我遇到了一个问题 - 我每天都在Heroku Scheduler上运行一个脚本。该脚本位于app文件夹之外,位于run.py和Procfile所在的目录中。我使用三个变量创建有效负载,最后一个是分配给URL的函数。
payload = reactivate_account_link(candidate.candidate_id, candidate.email, 'reactivate_account')
reactivate_account_link如下......
def reactivate_account_link(candidate_id, candidate_email, path):
s = get_serializer()
loads = [candidate_id, candidate_email]
payload = s.dumps(loads)
return url_for(path, payload=payload, _external=True)
问题是网址没有正确的根目录。它创造了......
http://localhost/candidates/reactivate_account/WzYsInN1cmFqa2FwQGdtYWlsLmNvbSJd.A484cnO8rRcAqe2M2mNrfoGludo/
而不是
http://[--DOMAIN--]/candidates/reactivate_account/WzYsInN1cmFqa2FwQGdtYWlsLmNvbSJd.A484cnO8rRcAqe2M2mNrfoGludo/
本地和prod都是如此。我想避免硬编码URL。
答案 0 :(得分:2)
您需要为应用配置SERVER_NAME
,否则您将获得默认值'localhost'
。无论您在何处创建和配置应用,请添加:
SERVER_NAME = 'myapp.heroku.com' # or whatever the external url should be