python中flask(二)

成功实现了hello world程序之后,下一部分是动态路由和调试模式。
1.动态路由:
最开始写的hello world程序里,只有一个固定网页,而如果我们想要写一个根据实际情况调整输出内容的网页时,就要用到动态路由了。
我们在hello world的基础上继续写即可:
route即是指定路径,我们可以写成:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/user/')
def user():
	return 'Hello user!'
	
@app.route('/user/<name>')
def username(name):
    return 'Hello %s' % name


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

第一个route指定的是视图函数hello_world的URL,而第二个指定的是user函数的URL,同理,第三个route指的是第三个函数username的URL,我们可以看到三者之间的区别。

那我们如何使用第二三个函数呢?

其实很简单只要调整我们的网址就可以了,假设我们使用的默认网址: http://127.0.0.1:5000 这个网址是第一个函数hello world的路径。那比较一下三者之间的区别:/user/指的是原网址的后面加一个/user/,即我们写成 http://127.0.0.1:5000/user/即可,第三个中的代表的是一个变量,‘<>’这个符号意思是我们可以在URL中输入一些东西,实现网页的动态变化,即所谓的传参,比如说我们可以写成http://127.0.0.1:5000/user/Jason 那么Jason就会被传入username这个函数里,就会输出 Hello Jason,如果把Jason换成Tom就会输出Hello Tom。这就实现了我们所说的动态输出。

结果可以看下图:

这个是含变量的:/user/Jason

python flask ip端口 python flask route_python

这个是单纯的/user/

python flask ip端口 python flask route_python_02

2.调试模式

在之前我们实现了动态路由,下一步就是维护你的网站,而其中最方便的方法就是调试,代码是:app.run(debug=True),它允许你在运行的时候调整你的代码,改完代码直接command+S即可保存,保存后,debug就会自动反馈:

python flask ip端口 python flask route_python_03

即 detected change 发现更改,然后就会重新加载你的网页,只要再刷新一次就可以看见更改后的网页了。

同时debug会为你代码的问题报错,在网页上就可以看到error在第几行,不需要在终端找bug。比如我们写一个错误代码

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    a=1
    b=0
    c=a/b
    return 'Hello world'


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

显然a/b的时候,b不能等于0,我们可以运行这个代码

python flask ip端口 python flask route_flask_04

网页就会告诉我们错在哪一行(网页最下方告诉我们错误出现在第九行)。

如果你用的是pycharm的话可能会遇见debug用不了的情况,解决方法是:

先点击上面的文件夹名称,然后点击 edit configurations,会弹出第二张图。

python flask ip端口 python flask route_flask_05

点完之后,只要勾选 FLASK_DEBUG就可以使用debug了

python flask ip端口 python flask route_配置文件_06

除此之外,debug模式还可以通过导入配置文件实现,比如说我们先建一个叫debug_order的python脚本:

DEBUG=True

然后在原文件里,先 import 并使用:

python flask ip端口 python flask route_debug_07

运行可在终端看见: Debugger is active!说明我们成功打开了debug模式,当然了,也可以导入其他指令的python文件,方法类似,比如导入一些我们需要的参数,可以降低主文件的复杂程度。