flask_mail 中的 _external=True 是什么意思?
What does _external=True mean in flask_mail?
import os
import secrets
from PIL import Image
from flask import url_for, current_app
from flask_mail import Message
from app import mail
def save_picture(form_picture):
random_hex = secrets.token_hex(8)
f_name, f_ext = os.path.splitext(form_picture.filename)
picture_fn = random_hex + f_ext
picture_path = os.path.join(current_app.root_path, 'static/profile_pics', picture_fn)
output_size = (125, 125)
i = Image.open(form_picture)
i.thumbnail(output_size)
i.save(picture_path)
return picture_fn
def send_reset_email(user):
token = user.get_reset_token()
msg = Message('Password Reset Request', sender='noreplies@diemo.hr', recipients=[user.email])
msg.body = f''' To reset your password, visit the following link:
{url_for('users.reset_token', token=token, **_external=True**)}
If you did not make this request then simply ignore this email and no changes will be made
'''
mail.send(msg)
我正在制作一个 Flask 应用程序并学习如何使用 flask_mail 模块发送重置电子邮件,所以我想知道当我将重置 link 在邮件正文中。我在 Google 上搜索过,但没有找到任何内容。提前谢谢你。
_external=True
告诉 Flask 它应该生成一个绝对值 URL,而不是一个相对值 URL。例如,https://example.com/my-page
是绝对值 URL,而 /my-page
是相对值 URL。由于您发送的是电子邮件,您站点中某个页面的亲戚 URL 将无法使用。
您可以在此处查看 url_for
的文档:https://flask.palletsprojects.com/en/1.1.x/api/#flask.url_for
_external – if set to True, an absolute URL is generated. Server address can be changed via SERVER_NAME configuration variable which
falls back to the Host header, then to the IP and port of the request.
import os
import secrets
from PIL import Image
from flask import url_for, current_app
from flask_mail import Message
from app import mail
def save_picture(form_picture):
random_hex = secrets.token_hex(8)
f_name, f_ext = os.path.splitext(form_picture.filename)
picture_fn = random_hex + f_ext
picture_path = os.path.join(current_app.root_path, 'static/profile_pics', picture_fn)
output_size = (125, 125)
i = Image.open(form_picture)
i.thumbnail(output_size)
i.save(picture_path)
return picture_fn
def send_reset_email(user):
token = user.get_reset_token()
msg = Message('Password Reset Request', sender='noreplies@diemo.hr', recipients=[user.email])
msg.body = f''' To reset your password, visit the following link:
{url_for('users.reset_token', token=token, **_external=True**)}
If you did not make this request then simply ignore this email and no changes will be made
'''
mail.send(msg)
我正在制作一个 Flask 应用程序并学习如何使用 flask_mail 模块发送重置电子邮件,所以我想知道当我将重置 link 在邮件正文中。我在 Google 上搜索过,但没有找到任何内容。提前谢谢你。
_external=True
告诉 Flask 它应该生成一个绝对值 URL,而不是一个相对值 URL。例如,https://example.com/my-page
是绝对值 URL,而 /my-page
是相对值 URL。由于您发送的是电子邮件,您站点中某个页面的亲戚 URL 将无法使用。
您可以在此处查看 url_for
的文档:https://flask.palletsprojects.com/en/1.1.x/api/#flask.url_for
_external – if set to True, an absolute URL is generated. Server address can be changed via SERVER_NAME configuration variable which falls back to the Host header, then to the IP and port of the request.