• 一 .Flask介绍和基本使用


    一 .Flask初步使用

    1.Flask简介

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,
    其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,
    如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
    werkzeug简介
    
    Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,
    也不是一个web框架,而是一个工具包,官方的介绍说是一个 WSGI 工具包,它可以作为一个 Web 框架的底层库,因为它封装好了很多
    Web 框架的东西,
    例如 Request,Response 等等
    flask 特点

    1. 短小精悍 可扩展性强 的一个web框架

    2. 上下文管理机制

    3. 依赖wsgi :werkzurg

     2. werkzurg学习(注意下载flask就带这个模块 了解)

    示例1:

    from
    werkzeug.wrappers import Request, Response from werkzeug.serving import run_simple def run(environ,start_response): return [b"11111"] if __name__ == '__main__': run_simple('localhost', 4000, run)
    实例2:

    from
    werkzeug.wrappers import Request,Response @Request.application def myhello (request): return Response("欢迎啊哈哈哈哈") if __name__ == '__main__': from werkzeug.serving import run_simple run_simple("localhost",4000,myhello)
    对类的巩固

    class
    Pro(): def __init__(self,aa,bb): self.cc=aa self.dd=bb print(self.cc) def __call__(self, *args, **kwargs): print(2) aa=Pro(11,22) 类实例化对象会调用__init__方法 aa() 对象加括号 会执行__call__方法 # 11 # 2

     3. Flask基本使用

     Flask 默认初始化属性  

    def __init__( self, import_name, static_url_path=None, static_folder="static", static_host=None, host_matching=False, subdomain_matching=False, template_folder="templates", instance_path=None, instance_relative_config=False, root_path=None, ):
    示例1:

    from
    flask import Flask app=Flask(__name__) @app.route("/") # 这是根路由 # @app.route("/index/") def myapp(): return "哈哈哈哈哈哈哈" if __name__ == '__main__': app.run()


    from  flask import Flask
    app=Flask(__name__)
    # @app.route("/") # 这是根路由
    @app.route("/index/")
    def myapp():
    return "哈哈哈哈哈哈哈"

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

     

    4. Flask基本使用(登录页面)

     示例1:

    flask 


    from
    flask import Flask,render_template,request app=Flask(__name__) @app.route("/") def myapp(): return render_template("login.html") # 注意这里需要自己创建 模板templates render_template:是指渲染模块 这个模板后缀可以不是html # request.args :表示get请求 这里默认是get请求 # request.form :表示post请求 if __name__ == '__main__': app.run()

    templates 模板
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>欢迎来到登录页面哈哈哈哈</h1> <form method="post"> <p>用户: <input type="text"></p> <p>密码: <input type="password"></p> <p>用户: <input type="submit" value="登录"></p> </form> </body> </html>

      

    示例2:

    flask主启动程序

    from
    flask import Flask,render_template,request,redirect,session #app=Flask(__name__,template_folder="templates",static_folder="static")
    app=Flask(__name__)
    # template_folder=""   注意可以指定 目标目录  默认是templatse
    # static_folder=""   注意可以指定静态目录    默认是static
    # static_url_path=""     注意可以指定静态 路径 别名        static_url_path="/vvvv"
    
    
    app.secret_key="aswdasdsad"  # 注意在设置session时要给一个随机字符串  相当于md5加盐 不然会报错 如下:
    # RuntimeError: The session is unavailable because no secret key was set.  Set the secret_key on the application to something unique and secret.
    @app.route("/login/",methods=["GET","POST"]) def myapp(): if request.method=="GET": return render_template("login.html") # 默认是get请求 user=request.form.get("user") pwd= request.form.get("pwd") print(user,pwd,"这是获取值") if user=="aaa" and pwd=="111": session["username"]=user # 设置session # return "登录成功了哈哈哈" return redirect("/index/") return render_template("login.html",error="你的用户密码错误了哈哈哈哈") # 方法一传参数 单个形式 # return render_template("login.html", **{"error":"你的用户密码错误了哈哈哈哈"}) # 方法二传参数 字典形式 @app.route("/index/") def index(): user=session.get("username") #获取session值 if not user: return redirect("/login/") return render_template("index.html") if __name__ == '__main__': app.run()



    login.html 登录页

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>欢迎来到登录页面哈哈哈哈</h1> <form method="post"> <p>用户: <input type="text" name="user"></p> <p>密码: <input type="password" name="pwd"></p> <p>用户: <input type="submit" value="登录"></p> <p>{{error}}</p> </form> <img src="/static/22.png" style="height:200px; 200px"> </body> </html>
    index.html 登录成功跳转页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>欢迎来到主页啊哈哈哈哈哇企鹅请问请问请问请问请问</h1> </body> </html>

     

  • 相关阅读:
    DataPipeline CTO陈肃:驱动软件国产化,客户需求是核心引擎
    DataPipeline王睿:业务异常实时自动化检测 — 基于人工智能的系统实战
    Q&A系列一:DataPipeline常见问题回答
    下篇丨数据融合平台DataPipeline的实际应用场景
    上篇丨数据融合平台DataPipeline的应用场景
    这些传统数据集成的痛,你还在经历吗?
    ETL的两种架构——ETL架构和ELT架构优劣势对比
    2020即将到来,看完这篇帮你详细了解数据策略
    DataPipeline丨「自定义」数据源,解决复杂请求逻辑外部数据获取难题
    SQLI-LABS LESS 1-LESS 22
  • 原文地址:https://www.cnblogs.com/lovershowtime/p/11728356.html
Copyright © 2020-2023  润新知