欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

Flask教程(三)路由

Flask Web 迷途小书童 4年前 (2020-03-13) 4788次浏览 2个评论

软硬件环境

  • Windows 10 64bit
  • Anaconda3 with python 3.7
  • PyCharm 2019.3
  • Flask 1.1.1

视频看这里

此处是youtube的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

什么是路由

路由(Routing)是用来映射URL和执行对应任务的函数。通过设置不同的路由,来访问不同的页面,像上一节中的/路由,就是访问网站的根目录。

实例

下面来看一个实例

from flask import Flask

app = Flask(__name__)

@app.route('/home')
def index():
    return "Welcome to home!"

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

这时候去访问http://127.0.0.1:5000就会出现404错误

flask

因为我们代码里根本就没有处理/路由的请求,访问http://127.0.0.1:5000/home,页面才会显示Welcome to home!

flask

那么另一个问题来了,如果有多条路由,比如/home/shelly/home/tom、/home/carl,能不能在同一个函数中进行处理呢?答案是可以的,我们可以通过给@app.route传递变量的方式实现,如下

from flask import Flask

app = Flask(__name__)

@app.route('/home/<name>')
def index(name):
    return f"Welcome to home!{name}"

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

这时候访问http://127.0.0.1:5000/home/carl,页面上就会显示Welcome to home!carl;访问http://127.0.0.1:5000/home/shelly,页面上就会显示Welcome to home!shelly

flask

flask

可以看到上面的实例中,传递的参数是字符串类型,那如果是其它数据类型,怎么办呢?看下面这个实例

from flask import Flask

app = Flask(__name__)

# 特别注意,int后面冒号前后不能有空格
@app.route('/home/<int:age>')
def index(age):
    return 'Age={}'.format(age)

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

这个时候我们就可以传递整型数据了 ,比如http://127.0.0.1:5000/home/20

flask

除了上述添加路由的方法,Flask还提供了一个函数add_url_rule,它也能够完成同样的功能,看个实例

from flask import Flask

app = Flask(__name__)

def index():
    return 'Hello flask!'

app.add_url_rule('/', "index", index)

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

访问http://127.0.0.1:5000,可以看到页面显示Hello flask!,效果跟使用@app.route是一模一样的

flask

源码下载

https://github.com/xugaoxiang/FlaskTutorial

Flask系列教程

更多 Flask 教程,请移步

https://xugaoxiang.com/category/python/flask/

喜欢 (0)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 赞一个
    匿名2021-08-20 15:47
  2. 赞~
    匿名2020-12-08 14:55
Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.