【whk】Flask 学习笔记

发布时间 2024-01-07 20:51:42作者: jiangtaizhe001

安装

首先你需要一个 python 和 pip。
然后 pip install flask 就好啦!
使用 from flask import Flask 导入。
pip install flask_form

创建网站

from flask import Flask
app=Flask(__name__)
if __name__=="__main__":
    app.run(host="127.0.0.1",port="5000")

如果仅仅运行这段代码,终端会输出:

 * Serving Flask app 'a'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

输出第一行的这个 'a' 是程序名。
第二行 Debug mode 是用于调试的,如果使用 app.run(debug=True) 就能打开,但是我目前不知道有什么用。
警告告诉了我们这个东西是用来调试的,确实,Python应该很少考虑什么效率吧。
后面是 IP 地址和端口。本机默认就是 127.0.0.1:5000,有些 IP 似乎会报错。而且不支持 HTTPS 协议。
if __name__=="__main__" 如果不写会出问题,报错信息为 Exception: you must provide at least a filename. 所以应该就是指定一个文件名什么的。

如果有人来访问网页那么终端就会有信息输出。

127.0.0.1 - - [07/Jan/2024 19:02:52] "GET / HTTP/1.1" 200 -

大概就是这样子,\(200\) 就是返回值,代表正常。

创建网页

@app.route('/') #路由
def index(): #视图函数
    return "<strong> Hello world! </strong>"

注意这个东西需要在 app.run() 前面 不然是没有用的。为了美观建议放在 if 的外面。
index 其实可以换成其他任意的东西,只要是一个函数就可以了,当然肯定不能有参数。
函数需要返回一个字符串,作为网页 HTML。不会 js 所以不知道能不能内嵌 js。
如果函数寄了(比如带了参数,返回不是字符串,或者函数里面引用越界了等)网页就会变成 500 Internal Server Error,终端会有错误信息输出。

第一行双引号内部写的是 URL。显然 / 就代表根,你可以写 /mainpage 之类的,这样访问 http://127.0.0.1:8080/mainpage 就会是这个函数返回的网页。

当用户在浏览器中向Web服务器发出请求时,Web服务器会把请求发送给Flask应用实例,如上面的APP。那么应用实例是如何知道每个URL与哪些Python代码相关联并运行的呢? Flask 是通过路由和视图函数的方法来解决这个问题的。上述代码中的“@app.route('/')”与“index()”就是一对路由和视图函数,而路由又与URL相关联,如网站为www.ex.cn,当用户访问网页http://www.ex.cn/时,视图函数index()的代码就会被运行。
——信息技术必修二。

关于 @

@ 在 python 中的含义是:函数修饰符。
@funA 修饰函数定义 def funC(),将 funC() 赋值给 funA() 的形参。
另一种含义是矩阵乘法,使用 __matmul__ 重载。

交互

显示静态网页当然没有意思,怎么和网页进行交互,也就是说我们的程序该如何从网页输如写什么呢?
@app.route('/',methods=["GET","POST"]) 可以把网页的 HTTP 方法设置为 GET 和 POST。
不写则默认为 GET。

GET

直接通过 URL 获取
例如 http://127.0.0.1:8080/a_plus_b?a=1&b=2 就可以从 URL 传两个变量了。

POST

会弹出窗口来获取信息。更为安全了。