问题描述
我在带有 Nginx 反向代理的 docker 容器中有一个 Flask web 应用程序。每个容器都是一个子域,所以 123.someurl.com 和 abc.someurl.com。用户注册使用该应用程序,当他们提交姓名和电子邮件时,我会向他们发送一封电子邮件,其中包含使用令牌设置密码的链接。一切正常,除了发送的链接是 localhost:5000/reset_password/token。
我需要将链接设为 123.someurl.com/reset_password/token 或 abc.someurl.com/reset_password/token,具体取决于它们所属的容器。
def send_welcome_email(user):
token = user.get_reset_token(expires_sec=86400)
msg = Message('Welcome to someurl.com',recipients=[user.email])
msg.body = f'''You have been registered with someurl.com,you must reset your password before you can login. To do so visit the following link:
{url_for('users.reset_token',token=token,_external=True)}
mail.send(msg)
首先,我将 msg.body 移到模板中,看看这是否有帮助。然后我尝试添加 SERVER_NAME 和 .test_request_context,这解决了 _external url_for 但它也搞砸了非外部 url_for。我更新的功能。
def send_welcome_email(user):
token = user.get_reset_token(expires_sec=86400)
msg = Message(
'Welcome to someurl.com',recipients=[user.email]
)
current_app.config['SERVER_NAME'] = 'development.someurl.com'
with current_app.test_request_context():
url = url_for(
'users.reset_token',_external=True,token=token
)
msg.html = render_template(
'users/register_email.html',url=url,username=user.username
)
mail.send(msg)
该网站在启动时工作正常,但一旦我注册用户,该网站就找不到任何网址。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)