马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qiuyouzhi 于 2020-3-9 18:12 编辑
Flask学习笔记1:程序的基本结构
初始化
所有的Flask应用程序都必须创建一个实例。服务器会使用
一种Web服务器网关接口(WSGI)来处理用户发出的数据,
并且把接收自客户端的所有请求都转交给这个对象处理。
通常这么写:from flask import Flask
app = Flask(__name__) # __name__是用来标注程序的根目录和程序包的名字
路由和视图函数
客户端将请求发给服务器,服务器将请求转交给我们的程序,
而我们的程序又需要知道对每个请求运行哪些代码,所以
保存了一个URL到Python的映射关系。
处理他们的关系就叫路由。
在Flask中,定义路由的最简单的方式就是用
Flask给我们的修饰器@app.route修饰器,
把修饰的函数修饰为路由。
看代码例子:@app.route('/') # 这是根地址,鱼C的fishc.com.cn就是根地址
def index():
return '<h1>Hello world!<h1>' # 这是函数的返回值
假设我们的域名叫做https://check.com,那么访问这个网址就会调用index函数,
这种函数就叫做视图函数(view funtion)。
它的返回值多种多样,既可以是一个字符串,也可以是一个复杂的表单。
如果你平常认真观察各种域名,会发现它们总会有一个可变的地方,
而我们的Flask支持这样做,只是写法比较特殊:
@app.route('/user/<name>') # 可变地址,尖括号中的东西就是动态部分
def user(name): # Flask会将动态部分传入参数
return "<h1> HELLO %s, THIS IS MY FIRST WEBSITE!</h1>"
我们还可以这么写:@app.route('/user/<int:shu>')
def math(shu):
return "<h1>5 * %d == %d ! </h1>" % (shu, 5 * shu)
启动服务器
Flask应用程序使用run方法启动Flask集成的Web服务器。
代码:
if __name__ == '__main__': # 这里确保不会被其他引用这个程序的程序调用它
app.run(debug=True) # 开启调试模式
服务器启动后,会进入轮询,等待并处理请求,直到终止(Ctrl+C)。
这时,我们访问这个网址只需要输入:
就可以顺利访问了!(在Python版本大于3.5是无法运行的,看后面的注意事项)
完整的程序!
from flask import Flask
app = Flask(__name__) # __name__是用来标注程序的根目录
@app.route('/') # 这是根地址,鱼C的fishc.com.cn就是根地址
def index():
return '<h1>Hello world!<h1>' # 这是函数的返回值
if __name__ == '__main__':
app.run(debug=True) # 开启调试模式
注意事项:
如果你的Python版本大于3.5是无法运行的:
Traceback (most recent call last):
File "D:\Flask学习\test\main.py", line 17, in <module>
app.run(debug=True) # 开启调试模式
File "C:\Users\####\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\app.py", line 985, in run
cli.show_server_banner(self.env, self.debug, self.name, False)
File "C:\Users\####\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\cli.py", line 670, in show_server_banner
click.echo(message)
File "C:\Users\####\AppData\Local\Programs\Python\Python38\lib\site-packages\click\utils.py", line 218, in echo
file = _default_text_stdout()
File "C:\Users\####\AppData\Local\Programs\Python\Python38\lib\site-packages\click\_compat.py", line 675, in func
rv = wrapper_func()
File "C:\Users\####\AppData\Local\Programs\Python\Python38\lib\site-packages\click\_compat.py", line 436, in get_text_stdout
rv = _get_windows_console_stream(sys.stdout, encoding, errors)
File "C:\Users\####\AppData\Local\Programs\Python\Python38\lib\site-packages\click\_winconsole.py", line 295, in _get_windows_console_stream
func = _stream_factories.get(f.fileno())
io.UnsupportedOperation: fileno
这时,我们只需要用命令行运行:
就可以顺利运行了!
如果有纰漏,请在评论区指出! |