Flask子域名变量未被捕获,其他路由404。

8
我正在尝试使用Flask的子域参数,但遇到了一些问题。
我已经配置了本地的/etc/hosts/文件,将example.com和blog.example.com指向127.0.0.1。
在“index”路由中,当我浏览http://blog.example.com:5000时,子域参数不会被捕获。 当我尝试打印“var”时,它打印“var is”。
“login”路由返回404错误,但我无法找出原因。非常感谢您的帮助!
from flask import Flask

app = Flask(__name__)
app.debug=True
app.config['SERVER_NAME'] = 'example.com'


# prints "var is <invalid>"
@app.route('/', subdomain="<var>", methods=['GET'])
def index(var):
    print "var is %s" % var
    return "Hello World %s" % var

# This 404s
@app.route('/login/', methods=['GET'])
def login():
    return "Login Here!"

if __name__ == '__main__':
    app.run(host='example.com', debug=True)
1个回答

6
你需要在你的SERVER_NAME配置中包含端口号。
app.config['SERVER_NAME'] = 'example.com:5000'

应该修复它。


2
可以运行,但是当我不使用子域时,索引路由会返回404。这是正常的工作方式吗? - Raj
澄清一下:我想要一个单一的路由来可选地处理子域名的请求。这样用户就可以浏览http://blog.example.com/post/123或http://example.com/blog/post/123。是否有可能在不重复大量代码的情况下实现? - Raj
2
搞定了!只需要像这样添加另一个路由装饰器:@app.route('/', methods=['GET']) - Raj
刚意识到我实际上没有说谢谢。所以,谢谢! - Raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接