不识别URL Root是危险的

时间:2014-11-11 22:46:58

标签: heroku flask

我使用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。

1 个答案:

答案 0 :(得分:2)

您需要为应用配置SERVER_NAME,否则您将获得默认值'localhost'。无论您在何处创建和配置应用,请添加:

SERVER_NAME = 'myapp.heroku.com'  # or whatever the external url should be