Flask中的 SERVER_NAME 主要做两件事:
协助Flask在活动的请求(request)之外生成绝对URL(比如邮件中嵌入网站URL)
用于子域名支持
很多人误以为它可以做这两件事之外的其它事情。
第一件事:绝对URL
我们知道, url_for 默认情况下是生成相对URL,它有个参数 _external ,如果设置为真,则会生成一个绝对URL(就是HTTP开头带域名等信息的)。若不指定SERVER_NAME ,默认使用当前活动的请求(request)来生成URL。
下面举个例子演示一下:
# filename myapp.py
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index():
return 'hello flask'
@app.route('/test')
def test():
return url_for('index', _external=True)
if __name__ == '__main__':
app.run(debug=True)