flask篇之路由和视图函数(二十二)
通过创建路由并关联函数,实现一个基本的网页:
python
#!/usr/bin/env python3
from flask import Flask
# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app = Flask(__name__)
#程序实例需要知道每个url请求所对应的运行代码是谁。
#所以程序中必须要创建一个url请求地址到python运行函数的一个映射。
#处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的
@app.route("/")
#url映射的函数,要传参则在上述route(路由)中添加参数申明
def index():
return "Hello World!"
# 启动一个本地开发服务器,激活该网页
if __name__ == '__main__':
app.run()
现在我们保存这个脚本然后去运行它
python
python3 app.py
![](https://file.jishuzhan.net/article/1724605403817316353/8e09ed8d49be4b0e602ca869bef76bd6.webp)
然后使用任意浏览器输入地址 http://127.0.0.1:5000,即可访问该界面
![](https://file.jishuzhan.net/article/1724605403817316353/be7ba86f3b58c5927c145bc3cce278d1.webp)
通过绑定路由实现多个视图函数:
python
#!/usr/bin/env python3
from flask import Flask
# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app = Flask(__name__)
#程序实例需要知道每个url请求所对应的运行代码是谁。
#所以程序中必须要创建一个url请求地址到python运行函数的一个映射。
#处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的
@app.route("/")
#url映射的函数,要传参则在上述route(路由)中添加参数申明
def index():
return "Hello World!"
#处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的,通过在浏览器中使用/a便可以访问该视图函数
@app.route("/a")
def add():
return "1+1=2"
# 启动一个本地开发服务器,激活该网页
if __name__ == '__main__':
app.run()
现在我们保存这个脚本然后去运行它
![](https://file.jishuzhan.net/article/1724605403817316353/ad9629499dc61f04cb96d179b343ea18.webp)
然后使用任意浏览器输入地址 http://127.0.0.1:5000/a,便可以访问第二个视图函数的页面
![](https://file.jishuzhan.net/article/1724605403817316353/fbe073e9a235159558b19f1415797f1d.webp)
动态路由传入变量实现视图函数:
python
#!/usr/bin/env python3
from flask import Flask
# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app = Flask(__name__)
#通过格式<>,来实现动态路由
@app.route("/usr/<username>"):
def user_index(username):
#在函数中指明变量名称username,就能够获取通过路由传入的变量username
return "Hello{}".format(username)
# 启动一个本地开发服务器,激活该网页
if __name__ == '__main__':
app.run()
现在我们保存这个脚本然后去运行它
![](https://file.jishuzhan.net/article/1724605403817316353/6aea8789d0a2a57a36a449c60f6cb1d1.webp)
然后使用任意浏览器输入地址 http://127.0.0.1:5000/user/动态变量,便可以访问该视图函数
通过格式<int:变量>,来实现动态路由传入指定的参数:
python
#!/usr/bin/env python3
from flask import Flask
# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app = Flask(__name__)
#通过格式<int:变量>,来实现动态路由传入指定的参数
@app.route("/post/<int:post_id>"):
def show_post(post_id):
#在函数中指明变量名称post_id,就能够获取通过路由传入的变量post_id
return "Post {}".format(post_id)
# 启动一个本地开发服务器,激活该网页
if __name__ == '__main__':
app.run()
现在我们保存这个脚本然后去运行它
![](https://file.jishuzhan.net/article/1724605403817316353/1b19ca070f6c6dbad99924d3b927a5a0.webp)
然后使用任意浏览器输入地址 http://127.0.0.1:5000/post/1,传入指定的 int 型传参,便可以访问该视图函数
![](https://file.jishuzhan.net/article/1724605403817316353/3a0d17901ce6602ffd4ea0287566df78.webp)
![](https://file.jishuzhan.net/article/1724605403817316353/1578583a7316f0d5de6cbdb2c15eb0cf.webp)
但如果此时我们传入的参数不是一个数字型的参数,而是一个字符型的参数,则界面会显示报错
![](https://file.jishuzhan.net/article/1724605403817316353/02afd6083ca02447db47b103dfbd666f.webp)
通过debug模式,来实现时实修改代码:
之前的案列中我们都是通过修改代码之后在运行代码来实现某个功能的运行的,这样很麻烦,现在来教大家一个时实修改代码,而不用重启运行代码的方式,现在我们向app.run()函数中添加debug=True来启动debug模式
python
#!/usr/bin/env python3
from flask import Flask
# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app = Flask(__name__)
#程序实例需要知道每个url请求所对应的运行代码是谁。
#所以程序中必须要创建一个url请求地址到python运行函数的一个映射。
#处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的
@app.route("/")
#url映射的函数,要传参则在上述route(路由)中添加参数申明
def index():
return "Hello World!"
#处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的,通过在浏览器中使用/a便可以访问该视图函数
@app.route("/a")
def add():
return "1+1=2"
# 启动一个本地开发服务器,激活该网页
if __name__ == '__main__':
#通过debug=True启动debug模式
app.run(debug=True)
现在我们保存这个脚本以debug的模式去运行它
![](https://file.jishuzhan.net/article/1724605403817316353/21a8f45c696bf09d0bf267384e129cfd.webp)
然后使用任意浏览器输入地址 http://127.0.0.1:5000/a,便可以访问第二个视图函数的页面
![](https://file.jishuzhan.net/article/1724605403817316353/cdb6dbb1b4cfeabbe09871ab7c4984a4.webp)
现在如果我们想要动态调试代码,那就再打开一个终端界面
python
vim app.py
![](https://file.jishuzhan.net/article/1724605403817316353/1e9dccba62240fc021d18c2e8910fbe2.webp)
然后将代码修改为以下的代码,保存退出即可
python
#!/usr/bin/env python3
from flask import Flask
# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app = Flask(__name__)
#程序实例需要知道每个url请求所对应的运行代码是谁。
#所以程序中必须要创建一个url请求地址到python运行函数的一个映射。
#处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的
@app.route("/")
#url映射的函数,要传参则在上述route(路由)中添加参数申明
def index():
return "Hello World!"
#处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的,通过在浏览器中使用/b便可以访问该视图函数
@app.route("/b")
def add():
return "1+1=2"
# 启动一个本地开发服务器,激活该网页
if __name__ == '__main__':
#通过debug=True启动debug模式
app.run(debug=True)
这一步我们不需要再去重新启动脚本了,因为该脚本一直再以debug的模式运行,然后使用任意浏览器输入地址 http://127.0.0.1:5000/b,便可以访问我们刚刚修改过的视图函数的页面
![](https://file.jishuzhan.net/article/1724605403817316353/7a095579ae83e04986c3eb74a5b6a877.webp)