美文网首页程序员
《flask Web 开发》读书笔记 & chapter

《flask Web 开发》读书笔记 & chapter

作者: 呆呆的张先生 | 来源:发表于2017-04-20 21:38 被阅读135次

    PS:flask 及github的新手向文章,大神绕路

    《flask Web 开发》该书的优势在于 结合作者可以设计的代码仓库,一步步展现一个项目的各个方面的细节,依次来展现flask框架的各个方面,但是本书 没有细致的阐述 flask 框架的语法,重点是阐述flask开发的基本流程,代码阅读起来会感觉逻辑十分混乱,不适合结构图形式的笔记,因此 通过复现书中的代码及仓库的创建过程来学习git及flask,同时记录遇到的语法疑点,进行进一步查证。

    环境设置

    • 工作目录:E:\study\evernote\material\flasky2
    • 创建本地仓库:git init
    • 添加 git忽略规则 .gitignore
    • 添加笔记文件 readme.md
    • 创建虚拟环境:virtualenv venv,>venv\scripts\activate, 向 .gitignore 添加 venv
    • 安装 flask:pip install flask , 向 .gitignore 添加 python 的忽略项 *.py[cod] *.so *.egg *.egg-info dist build

    第一个完整程序

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return '<h1> Hello World !</h1>'
    # 路由的基本使用
    @app.route('/user/<name>')
    def user(name):
        return '<h1> Hello %s !</h1>' % name
    # 动态路由的基本实现
    if __name__ == '__main__':
        app.run(debug=True)
    
    • 添加到本地仓库, git add ., git commit -m "2a, basic use of route"

    上下文对象和url_map

    from flask import Flask
    from flask import request
    
    app = Flask(__name__)
    
    # 路由的基本用例
    @app.route('/')
    def index():
        # return '<h1> Hello World !</h1>'
        # request 请求上下文的使用
        # use_agent = request.headers.get('User-Agent')
        # return '<h1> Your brower is %s !</h1>' % use_agent
        # url_map 的信息
        return '<p> url_map is %s !</h1>' % app.url_map
    
    
    # 动态路由的基本用例
    @app.route('/user/<name>')
    def user(name):
        return '<h1> Hello %s !</h1>' % name
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    • 添加到本地仓库, git add ., git commit -m "2b, request and url_map"

    响应对象 Response 的使用

    from flask import Flask
    from flask import make_response
    
    app = Flask(__name__)
    
    # 路由的基本用例
    @app.route('/')
    def index():
        # 相应 Response 对象的基本使用
        response = make_response( '<h1> This file carries with a cookie !</h1>' )
        response.set_cookie('answer','42')
        return response
    
    # 动态路由的基本用例
    @app.route('/user/<name>')
    def user(name):
        return '<h1> Hello %s !</h1>' % name
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    • Chrome 浏览器查看 cookie 点击 url 左侧的感叹号
    • 添加到本地仓库, git add ., git commit -m "2c, response object"

    重定向对象 redirect 和 abort 的使用

    from flask import Flask
    from flask import redirect
    from flask import abort
    
    app = Flask(__name__)
    
    # 路由的基本用例
    @app.route('/')
    def index():
        # 重定向响应 redirect(url)
        return redirect('http://baidu.com')
    
    # 动态路由的基本用例
    @app.route('/user/<name>')
    def user(name):
        if name !='zhang':
        # 处理错误的abort 函数的使用
            abort(404)
        return '<h1> Hello %s !</h1>' % name
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    • 添加到本地仓库, git add ., git commit -m "2d, redirect and abort"

    flask-script 支持命令行选项

    • 安装 flask-script:pip install flask-script
    from flask import Flask
    from flask_script import Manager
    
    app = Flask(__name__)
    manager = Manager(app)
    
    # 路由的基本用例
    @app.route('/')
    def index():
        return '<h1> Hello world !</h1>'
    
    # 动态路由的基本用例
    @app.route('/user/<name>')
    def user(name):
        return '<h1> Hello %s !</h1>' % name
    
    if __name__ == '__main__':
        manager.run()
    
    • 指定服务器地址 python hello.py runserver --host localhost
    • 添加到本地仓库, git add ., git commit -m "2e, flask-script basic"

    查看代码及全文

    相关文章

      网友评论

        本文标题:《flask Web 开发》读书笔记 & chapter

        本文链接:https://www.haomeiwen.com/subject/rkcrzttx.html