qiuyouzhi 发表于 2020-3-9 18:11:06

Flask学习笔记1:程序的基本结构

本帖最后由 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)。

这时,我们访问这个网址只需要输入:

http://127.0.0.1:5000

就可以顺利访问了!(在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

这时,我们只需要用命令行运行:

python main.py

就可以顺利运行了!

如果有纰漏,请在评论区指出!

一个账号 发表于 2020-3-9 18:40:12

https://www.jb51.net/article/85863.htm

qiuyouzhi 发表于 2020-3-9 18:41:54

一个账号 发表于 2020-3-9 18:40
https://www.jb51.net/article/85863.htm

好像

暗夜之隐 发表于 2020-4-1 23:13:29

谢谢 学习了
页: [1]
查看完整版本: Flask学习笔记1:程序的基本结构