资讯专栏INFORMATION COLUMN

flask基础01

Keven / 2779人阅读

摘要:用于提供命令,并允许添加自定义管理命令创建第一个应用文件内容导入类创建类的实例使用装饰器来告诉触发函数的函数名称被用于生成相关联的。请求中的。。。。与类似也是一个内置对象可以直接打印。。。。

Flask基础 Python版本管理器(pyenv)
安装pyenv
1:  sudo apt-get install curl git 
2:  sudo curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
3:  将提示的三行代码复制 # 会出现提示的三行代码,格式如下
    eg:
        export PATH="/root/.pyenv/bin:$PATH"
        eval "$(pyenv init -)"
        eval "$(pyenv virtualenv-init -)" 
4: sudo vim ~/.bashrc 
5: 追加刚才复制的三行代码至最后
    eg: 
        export PATH="/root/.pyenv/bin:$PATH"
        eval "$(pyenv init -)"
        eval "$(pyenv virtualenv-init -)" 
6: sudo source ~/.bashrc       
7: sudo echo $PATH # 如果出现  .pyenv/shims 说明成功
8: pyenv update # 更新
卸载pyenv
1: sudo rm -fr ~/.pyenv
2: 同时删除  .bashrc 下面这些内容
    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
安装python
1:安装依赖
    sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
    sudo apt-get install libc6-dev gcc-5 
2:cd ~/.pyenv
3: mkdir -p cache
4: 将下载的 python包 放到cache下 
5: pyenv install 3.6.4 -v 
6: pyenv rehash # 更新pyenv库
Python管理
1:列出pyenv已经安装的python版本
    pyenv versions
2: python版本切换
    pyenv global 3.6.4 
3:卸载python
    pyenv uninstall 3.6.4
虚拟环境管理
第一种
1:Python自带环境创建
    # 创建环境
    python -m venv 
    # 激活环境
    source ....pathon/bin/activate # 环境的路径
    # 退出环境
    deactivate
第二种
1: pip install virtualenvwrapper 
2: sudovim ~/.bashrc 
3: 最后一行加入 # 注意修改主机名,和python版本
    if [ -f /home/dq/.pyenv/versions/3.6.4/bin/virtualenvwrapper.sh ]; then

    export WORKON_HOME=$HOME/.virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/home/dq/.pyenv/versions/3.6.4/bin/python
    export VIRTUALENVWRAPPER_VIRTUALENV=/home/dq/.pyenv/versions/3.6.4/bin/virtualenv
    source /home/dq/.pyenv/versions/3.6.4/bin/virtualenvwrapper.sh
    fi
4:source ~/.bashrc # 配置文件生效
5: 基本使用:
    # 创建环境
    mkvirtualenv 
    # 激活环境
    workon  
    # 退出环境
    deactivate
    # 列出所有的虚拟环境
    lsvirtualenv
    # 删除虚拟环境
    rmvirtualenv 
    # 虚拟环境存放位置
    ~/.virtualenvs/
第三种
1: pip install virtualenv
2: mkdir -p /data/blog
3: cd /data/blog/
4: 基本使用
    # 创建环境
    pyenv virtualenv 
    # 激活环境
    pyenv activate 
    # 退出环境
    pyenv deactivate 
    # 虚拟存放位置 ~/.pyenv/versions/
第四种
1:pycharm编辑器自带创建虚拟环境功能
Flask依赖包
安装flask
pip install flask
包名 作用
Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口
Jinja 用于渲染页面的模板语言
MarkupSafe 与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击
ItsDangerous 保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie
Click 是一个命令行应用的框架。用于提供 flask 命令,并允许添加自定义 管理命令
创建第一个Flask应用
文件内容
from flask import Flask
# 导入Flask类
app = Flask(__name__)
# 创建Flask类的实例

@app.route("/")
# 使用 route() 装饰器来告诉 Flask 触发函数的 URL
def hello_world():
    # 函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息
    return "Hello, World!"
项目启动
1:手动启动:
    1:终端里导出 FLASK_APP 环境变量:
        export FLASK_APP=app.py
    2:启动项目:
        flask run
    3:浏览器访问
        127.0.0.0:5000
2:pycharm中启动:
    python app.py runserver
     # 文件内容中要有以下代码:
        if __name__ == "__main__":
        app.run()
    -p # 端口号
    -h # 主机名
    -r # 修改代码重载
    -d # 调试模式 
路由
1:变量规则:
    # 关键字参数
    @app.route("/user/")
    def show_user_profile(username):
        
        return "User %s" % username 
    127.0.0.1:5000/user/cross
        
    # 关键字加限定类型
    @app.route("/post/")
    def show_post(post_id):
        
        return "Post %d" % post_id
2: 参数类型:
    1:string  # 接受任何不包含斜杠的文本
    2: int     # 接受正整数
    3: float   # 接受正浮点数
    4: path    # 类似 string ,但可以包含斜杠
    5: uuid    # 接受 UUID 字符串
3:唯一url和重定向行为:
    1:@app.route("/projects/")
    2:@app.route("/about")
    # 如果浏览器访问资源路径后面一个斜杠不加的话,1路由请求不会报错,flask会自动重定向帮你加上斜杠,2:路由也不会报错
    # 如果浏览器访问资源路径后面添加上一个斜杠的话2路由会报404错误 
HTTP方法
1:route装饰器中如果不声明请求方法默认是GET方法
    # 如果想要使用post方法,需要声明 methods=["POST"]
2:eg:
    from flask import request
    @app.route("/login", methods=["GET", "POST"])
    def login():
        if request.method == "POST":
            return do_the_login()
        else:
            return show_the_login_form()
Flask第一次封装
项目结构
├── App    # 项目应用
│   ├── __init__.py   # 初始化文件
│   ├── models.py     # 模型 创建数据库模型 orm对象关系映射
│   ├── static        # 静态资源 css js img 等等
│   ├── templates     # 模板,动态资源,html
│   └── views.py      # 路由 试图函数
├── app.py            # 整个项目文件,项目入口                 
命令行管理项目(manager.py)
1:pip install flask-script
2: 基本使用
    from flask import Flask
    from flask_script import Manager

    app = Flask(__name__)
    manager = Manager(app=app)
    
    @app.route("/")
    def hello_world():
        return "Hello World!"
    
    if __name__ == "__main__":
        manager.run()
3:修改项目入口文件为manager.py        
4: 测试:
    python manager.py runserver
初始化Flask类(__init__.py)
1:init文件封装函数实例化Flask类
    from flask import Flask


    def create_app():
        app = Flask(__name__)
        return app
2:manager.py 导入函数实例化类
    from flask_script import Manager
    from App import create_app

    app = create_app()
    ..................
蓝图管理路由(views.py)
1: 蓝图(blutprint):
     1:好处:
            Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰、简单易懂,项目模块化,方便管理
2:安装:
    pip install flask-blueprint
3: 蓝图使用 
    1:实例化蓝图
        from flask import Blueprint
        blue = Blueprint("first", __name__) # first为蓝图名字,多为反向解析时使用
    2:装饰函数
        @blue.route("/")
        def hello_world():
            return "Hello World!"
    3:注册蓝图(manager.py)
        from App.views import blue
        app.register_blueprint(blue) 或者 app.register_blueprint(blueprint=blue)   
request
方法 返回值 eg:
request.method 返回请求方法 GET/POST
request.base_url 去掉get参数的url http://127.0.0.1:5000/testrequest/
request.host_url 只有主机和端口号的url http://127.0.0.1:5000/
request.url 完整的请求地址 http://127.0.0.1:5000/testrequest/
request.mote_addr 请求的客服端地址 127.0.0.1
request.args.get("参数") GET请求获取参数 cross
request.form.get("参数") POST请求获取参数 cross
request.files 文件上传 。。。。
request.headers 请求头 。。。。
request.path 路由中的路径 。。。。
request.cookies 请求中的cookie 。。。。
session 与request类似 也是一个内置对象 可以直接打印 print(session) 。。。。
request.form["参数"] POST请求获取参数 cross
request.args["参数"] GET请求获取参数 cross
response
返回类型
1:string  # 字符串
    @blue.route("/testresponse/")
    def testresponse():
        return "过去从未消亡,它甚至从未过去"
2:reder_template  # 模板渲染
    @blue.route("/testresponse1/")
    def testresponse1():
        return render_template("/index.html/")
3:make_response  
    @blue.route("/testresponse2/")
    def testresponse2():
        res = make_response("

过去从未消亡,它甚至从未过去

") print(type(res)) return res
4:redirect # 重定向
    @blue.route("/testresponse3/")
    def testresponse3():
        res = redirect(url_for("first.testresponse1"))
        print(type(res))
        return res
5:Response
    @blue.route("/testresponse4/")
    def testresponse4():
        name = request.args.get("name")
        res = Response("你真的认识我吗?%s" % name)
        return res 
会话技术

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43718.html

相关文章

  • docker-compose 运行 Flask 应用最佳实践

    摘要:现在有了之后,部署方式变了更加容易,不容易出现配置错误,环境不一致问题。实际应用中,经常遇到多个容器相配合运行一套应用程序的情况。所以想要将应用运行在容器中,该容器必须将该应用所有的环境依赖安装好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景   以前部署应用,需要各种环境配置,各种shell操作...

    fasss 评论0 收藏0
  • docker-compose 运行 Flask 应用最佳实践

    摘要:现在有了之后,部署方式变了更加容易,不容易出现配置错误,环境不一致问题。实际应用中,经常遇到多个容器相配合运行一套应用程序的情况。所以想要将应用运行在容器中,该容器必须将该应用所有的环境依赖安装好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景   以前部署应用,需要各种环境配置,各种shell操作...

    sumory 评论0 收藏0
  • 基于 oracle 的 flask 项目(五)——报表下载

    摘要:将报表下载下来,然后能稍许进行修饰,这是必须的。项目描述将页面原始呈现的数据及搜索后的数据以报表的形式下载下来。至此,你可以实验一下,你的项目是否可以实现报表下载了。 在国企,很多领导是按部就班的晋升上来的,他们的年龄及经历使他们至今还没有掌握电脑的基础知识,因此,纸质报表是他们掌握全局的依据,必备的工具。将报表下载下来,然后能稍许进行修饰,这是必须的。 项目描述 将页面原始呈现的数据...

    klinson 评论0 收藏0
  • 如何优雅的在flask中记录log

    摘要:一般的工厂模式结构如下那么我们在先在中定义,然后再在中定义子,均使用初始化输出可以发现输出的就是所在的文件目录,之间的继承关系与整个程序包保持一致。在模块中通过来记录输出效果注意对于的引用不能通过如下方式,会有的报错。 背景 记录日志,在任何项目中,都是很重要的。在Flask项目中,即有Flask提供的logger可以用来记录log,也可以通过直接使用Python的logging模块自...

    hsluoyz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<