SERVER_NAME
是Flask中比较容易用错的一个设置值,本文将介绍如何正确使用SERVER_NAME
。
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)
【情景1】通过浏览器访问
app
运行之后,在本地5000端口监听。
(env) F:\tmp>python myapp.py
* Running on http://127.0.0.1:5000/
* Restarting with reloader