📜  Flask “可变规则

📅  最后修改于: 2020-10-25 11:29:28             🧑  作者: Mango


通过将可变部分添加到规则参数中,可以动态构建URL。此变量部分标记为 。它作为关键字参数传递给与规则关联的函数。

在下面的示例中, route()装饰器的rule参数包含附加到URL“ / hello”的可变部分。因此,如果HTTP://本地主机:5000 /你好/ TutorialsPoint输入在浏览器中一个URL,一个€~TutorialPoint’将提供给你好()函数作为参数。

from flask import Flask
app = Flask(__name__)

@app.route('/hello/')
def hello_name(name):
   return 'Hello %s!' % name

if __name__ == '__main__':
   app.run(debug = True)

将上面的脚本另存为hello.py并从Python shell运行它。接下来,打开浏览器并输入URL http:// localhost:5000 / hello / TutorialsPoint。

以下输出将显示在浏览器中。

Hello TutorialsPoint!

除了默认的字符串变量部分,还可以使用以下转换器来构建规则-

Sr.No. Converters & Description
1

int

accepts integer

2

float

For floating point value

3

path

accepts slashes used as directory separator character

在下面的代码中,将使用所有这些构造函数。

from flask import Flask
app = Flask(__name__)

@app.route('/blog/')
def show_blog(postID):
   return 'Blog Number %d' % postID

@app.route('/rev/')
def revision(revNo):
   return 'Revision Number %f' % revNo

if __name__ == '__main__':
   app.run()

从Python Shell运行以上代码。在浏览器中访问URL http:// localhost:5000 / blog / 11

给定的数字用作show_blog()函数。浏览器显示以下输出-

Blog Number 11

在浏览器中输入此URL- http:// localhost:5000 / rev / 1.1

version()函数使用浮点数作为参数。以下结果显示在浏览器窗口中-

Revision Number 1.100000

Flask的URL规则基于Werkzeug的路由模块。这样可以确保形成的URL是唯一的,并且基于Apache规定的先例。

考虑以下脚本中定义的规则-

from flask import Flask
app = Flask(__name__)

@app.route('/flask')
def hello_flask():
   return 'Hello Flask'

@app.route('/python/')
def hello_python():
   return 'Hello Python'

if __name__ == '__main__':
   app.run()

两条规则看起来相似,但是在第二条规则中,使用了斜杠(/) 。结果,它成为规范的URL。因此,使用/ Python/ Python/返回相同的输出。但是,在第一个规则的情况下, / flask / URL会导致404 Not Found页面。