• python之路_flask框架_框架入门


      Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

      默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。

    #django与flask框架对比:
    '''
    Django:无socket、中间件、路由系统、视图(CBV,FBV)、 模板、ORM、cookie、Session、Admin、Form、缓存、信号、序列化....
    Flask:无socket、中间件(扩展)、路由系统、视图(CBV)、第三方模板(jinja2)、cookie和Session很弱
    '''

    一、建立虚拟环境

      具体步骤如下:

    '''
    1、pip3 install virtualenv
            
    2、创建虚拟环境
            virtualenv env1(虚拟环境名) :切换到任意路径执行
            
    3、进入虚拟环境
            Scripts/activate:切到Scripts文件下,执行activate
            
    4、退出虚拟环境
        Scripts/deactivate:切到Scripts文件下,执行deactivate
    '''

      pycharm中创建和使用虚拟环境:

      flask安装如下,建议使用pip3,否则可能会报诸如 Running setup.py install for MarkupSafe ... error的错:

    pip3 install flask

    二、入门实例

    from flask import Flask
    app=Flask(__name__)
    
    #路由方式一(常用)
    
    @app.route("/index")
    def index():
        return "hello world"
    
    #路由方式二
    '''
    def index():
        return "thank you"
    app.add_url_rule("/index/","s1",index)   (s1为url别名)
    '''
    
    
    if __name__ == '__main__':
        app.run()

    三、登录实例

      代码如下:

    from flask import Flask,request,redirect,render_template,session
    
    app=Flask(__name__,template_folder="templates",static_url_path="/xxx")
    app.secret_key="aslsbjnasbdanksljkma"  #设置session需要的密钥
    
    
    @app.route("/login/",methods=["GET","POST"])
    def login():
        if request.method=="POST":
            # print(request.form)  #获取form表单数据,为字典
            username=request.form.get("user")
            userpswd=request.form.get("pswd")
            if username=="alex" and userpswd=="123":
                session["userifo"]=username
                return redirect("/index/")
            else:
                # return render_template("login.html",msg="用户名或者密码错误")                #模板传值方式一
                return render_template("login.html",**{"msg":"用户名或者密码错误"})      #模板传值方式二
        else:
            return render_template("login.html")
    
    @app.route("/index/",methods=["GET"])
    def index():
        return "登录成功"
    
    if __name__ == '__main__':
        app.run()

     1、静态文件配置

    2、session设置

    3、模板传值方式

    4、路由匹配参数

    四、知识回顾

    1、无参数装饰器

    # 无参数的装饰器
    def wapper(f):
        def inner(*args,**kwargs):
            return f(*args,**kwargs)
        return inner
    
    @wapper
    def func(arg):
        print(arg)
    
    func(123)

    2、有参数装饰器

    # 有参数的装饰
    def outer(num):
        def wapper(f):
            def inner(*args,**kwargs):
                return f(*args,**kwargs)
            return inner
        return wapper
    @outer(666)                     # 先执行outer(666),获取返回值; @wapper,再执行wapper函数wapper(func); func=inner函数
    def func(arg):
        print(arg)
    
    func(123)
  • 相关阅读:
    剑指offer(18)二叉搜索树的后续遍历
    剑指offer(17)层次遍历树
    剑指offer(16)栈的压入、弹出序列
    剑指offer(15)
    剑指offer(14)
    剑指offer(13)
    剑指offer(12)
    剑指offer(11)
    2020 年 11 月编程语言排行榜,Python 势如破竹,超越 Java?
    Python 除了 time.sleep,你还有一个暂停代码的方法
  • 原文地址:https://www.cnblogs.com/seven-007/p/8362033.html
Copyright © 2020-2023  润新知