• Flask 学习(一)简单介绍


    Flask介绍(轻量级的框架)

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。

    使用

    from flask import Flask
    
    app = Flask(__name__)
    
    
    # 添加路由方式一
    @app.route('/')
    def hello_world():
    
        return 'Hello World!'
    
    
    # 添加路由方式二
    # app.add_url_rule('/', view_func=hello_world)
    
    if __name__ == '__main__':
        app.run(host="0.0.0.0", port=9527, debug=True)
    
    # wsgi 应用程序网关接口 把你请求处理后发送给对应的app
    # werkzeug

    路由三种返回方式

    from flask import Flask, render_template, redirect
    
    app = Flask(__name__)
    
    # 三种返回方式
    
    
    @app.route('/')
    def hello_world():
    
        return 'Hello World!'
    
    
    @app.route("/login")
    def login():
        # 模板渲染
        return render_template("login.html")
    
    
    @app.route("/home")
    def home():
        # 重定向
        return redirect("/")
    
    
    if __name__ == '__main__':
        # app.run(host="0.0.0.0", port=9527, debug=True)
        app.run(debug=True)
    # wsgi 应用程序网关接口 把你请求处理后发送给对应的app
    # werkzeug

      

    登录举例

    from flask import Flask, render_template, redirect, request,session
    
    app = Flask(__name__)
    app.secret_key = "abcdefg" # Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值
    # 三种返回方式
    
    
    @app.route('/')
    def hello_world():
    
        return 'Hello World!'
    
    
    @app.route("/login", methods=("GET","POST"))
    def login():
        # 模板渲染
        # print(request.path)
        # print(request.url)
        # print(request.headers)
        if request.method == "GET":
            print(request.args.get("id"))
            return render_template("login.html")
        else:
    
            # print(request.form)
            # print(request.values.to_dict())   # 这个里面什么都有,相当于body
            # print(request.json)  # application/json
            # print(request.data)
            username = request.form.get("username")
            password = request.form.get("password")
            if username == "alex" and password == "123":
                session["user_info"] = username
                # session.pop("user_info")  #删除session
                return "登录成功"
            else:
                return render_template("login.html", msg="用户名或者密码错误")
    
    
    @app.route("/home")
    def home():
        # 重定向
        return redirect("/")
    
    
    
    if __name__ == '__main__':
        # app.run(host="0.0.0.0", port=9527, debug=True)
        app.run(debug=True)
    # wsgi 应用程序网关接口 把你请求处理后发送给对应的app
    # werkzeug

    login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h1>登录页面</h1>
    <form action="/login?id=002" method="post">
        <p>用户名:<input type="text" name="username"></p>
        <p>密码:<input type="text" name="password"></p>
        <p><input type="submit" value="查看小秘密"></p>
        <p>{{ msg }}</p>
    </form>
    
    </body>
    </html>

     一般错误解决

     使用

    @app.route("/xx", methods=("GET","POST"))
    

      使用

    app.secret_key = "abcdefg"  # Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值
    

      

  • 相关阅读:
    Gantt/BTS 生产计划电子看板甘特图
    C# DotNetty TCP对接 松下扣料机
    Vue 和 Zebra 打印机连接直接打印条码
    JavaFx 通信ITC数字广播 SAPI 使用NeoSpeech Liang包生成语音
    Docker RabbitMQ 镜像集群
    游戏匹配实现
    Metro 界面设计案例
    JavaFX 集成 Sqlite 和 Hibernate 开发爬虫应用
    Discuz论坛 自动加好友留言程序
    JavaFX Metro UI 和 开发库
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/11579070.html
Copyright © 2020-2023  润新知