0%

Flask快速建站

Flask为何物

Falsk是由python开发的轻量的web框架,小巧,灵活,一个脚本就可以启动一个web项目, 开发的难度比较大,flask好多的模块是按照django的思路开发的。和flask类似的框架还有web.py

flask和django的区别

  • Django: 大而全,有一套完整的框架,但是耦合性高。Auth,Permission,admin基本没用开发快,符合MVC模式
  • Flask: 微框架,很小巧。一个脚本就可以启动一个web项目,需要哪些功能,自己装。需要熟悉MVC模式

Flask建站

pip install flask
image-20220816001615926

在web1项目根目录中新建web001.py文件,其中⬇️

from flask import Flask

app = Flask(__name__) #Flask是一个类

# 创建了网址 /show/info 和 函数index 的对应关系
# 以后用户在浏览器上访问 /show/info,网站自动执行 index
@app.route("/show/info")
def index():
return "中国联通"

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

image-20220816003732254

此时访问 http://127.0.0.1:5000/show/info 即出现 中国联通

咱们网站与别人的不一样:

  • Flask框架为了让咱们写标签方便,支持将字符串写入到文件里。
from flask import Flask,render_template

app = Flask(__name__)

@app.route("/show/info")
def index():
# Flask内部会自动打开这个文件,并读取内容,将内容给用户返回。
# 默认:去当前项目目录的templates文件夹中找。
return render_template("index.html")

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

此时的目录结构:

image-20220816205452931

知识点回顾和补充

  1. 网站请求的流程
    image-20211119140524753

  2. 一大堆的标签

    h/div/span/a/img/ul/li/table/input/textarea/select
  3. 网络请求

    • 在浏览器的URL中写入地址,点击回车,访问。

      浏览器会发送数据过去,本质上发送的是字符串:
      "GET /explore http1.1\r\nhost:...\r\nuser-agent\r\n..\r\n\r\n"

      浏览器会发送数据过去,本质上发送的是字符串:
      "POST /explore http1.1\r\nhost:...\r\nuser-agent\r\n..\r\n\r\n数据库"
    • 浏览器向后端发送请求时

      • GET请求【URL方法 / 表单提交】

        • 现象:GET请求、跳转、向后台传入数据数据会拼接在URL上。

          https://www.sogou.com/web?query=安卓&age=19&name=xx

          注意:GET请求数据会在URL中体现。

      • POST请求【表单提交】

        • 现象:提交数据不在URL中而是在请求体中。

案例

创建/Users/jiangangkong/workSpace/pycharmWorkSpace/example1

在其根目录中创建app.py、templates目录/register.html、static目录

  • app.py中代码

    1. 后台接受用户通过GET形式发送过来的数据 request.args
    2. 后台接受用户通过POST形式发送过来的数据request.form
    from flask import Flask, render_template, request

    app = Flask(__name__)


    @app.route('/register', methods=['GET', "POST"])
    def register():
    if request.method == "GET":
    return render_template('register.html')

    else:
    user = request.form.get("user")
    pwd = request.form.get("pwd")
    gender = request.form.get("gender")
    hobby_list = request.form.getlist("hobby")
    city = request.form.get("city")
    skill_list = request.form.getlist("skill")
    more = request.form.get("more")
    print(user, pwd, gender, hobby_list, city, skill_list, more)
    # 将用户信息写入文件中实现注册、写入到excel中实现注册、写入数据库中实现注册

    # 2.给用户再返回结果
    return "注册成功"


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

  • register.html中代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <h1>用户注册</h1>

    <form method="post" action="/register">
    <div>
    用户名:<input type="text" name="user"/>
    </div>
    <div>
    密码:<input type="password" name="pwd"/>
    </div>
    <div>
    性别:
    <input type="radio" name="gender" value="1">
    <input type="radio" name="gender" value="2">
    </div>
    <div>
    爱好:
    <input type="checkbox" name="hobby" value="10">篮球
    <input type="checkbox" name="hobby" value="20">足球
    <input type="checkbox" name="hobby" value="30">乒乓球
    <input type="checkbox" name="hobby" value="40">棒球
    </div>

    <div>
    城市:
    <select name="city">
    <option value="bj">北京</option>
    <option value="sh">上海</option>
    <option value="sz">深圳</option>
    </select>
    </div>

    <div>
    擅长领域:
    <select name="skill" multiple>
    <option value="100">吃饭</option>
    <option value="101">睡觉</option>
    <option value="102">打球</option>
    </select>
    </div>

    <div>
    备注:<textarea name="more"></textarea>
    </div>

    <input type="submit" value="submit按钮">
    </form>

    </body>
    </html>