我看过一个关于烧瓶的教程,我似乎不明白这个代码是如何工作的
def my_home(): return render_template("./index.html") @app.route('/<string:page_name>') def html_page(page_name): return render_template(page_name)```
特别是/
答案在于装饰者的魔力,而不是烧瓶本身。装饰器是一个高级函数,它接受一个函数并相应地操作它。请参阅以下示例:
def route(func, user_path):
# internal flask mechanisms here
def callback(user_path):
return http.route(user_path, func)
return callback
@route("hello_world")
def render():
return "Hello World"
装饰器将您的函数作为输入,并执行一些操作将路径与您的给定输入相关联。这显然可以用于许多其他目的。例如,烧瓶还允许一个额外的装饰器来定义函数允许的请求类型,如GET、POST等。
为了回答您的问题,flask正在接受一个URL参数,并根据该参数生成页面。这被称为动态路由,用于基于路由的数据库查询目的(尽管给定的示例很简单)。因此,如果有人转到page_name
John,您可以使用该值并在html中设置模板,动态地向John(以及其他任何人)问好。
/<string:page_name>
意味着Flask希望在您的域名之后有一个自定义的字符串。
www.yourdomain.com/anycustomisedstring
/<data_type:your_variable_name> i.e. /<integer:page_number>
在这种情况下,变量作为参数传递给函数。此函数返回在URL中作为字符串传递的站点