flask基礎01

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 <envname>
    # 激活環境
    source ....pathon<envname>/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 <envname>
    # 激活環境
    workon <envname> 
    # 退出環境
    deactivate
    # 列出全部的虛擬環境
    lsvirtualenv
    # 刪除虛擬環境
    rmvirtualenv <envname>
    # 虛擬環境存放位置
    ~/.virtualenvs/
第三種
1: pip install virtualenv
2: mkdir -p /data/blog
3: cd /data/blog/
4: 基本使用
    # 建立環境
    pyenv virtualenv <envname>
    # 激活環境
    pyenv activate <envname>
    # 退出環境
    pyenv deactivate <envname>
    # 虛擬存放位置 ~/.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/<username>')
    def show_user_profile(username):
        
        return 'User %s' % username 
    127.0.0.1:5000/user/cross
        
    # 關鍵字加限定類型
    @app.route('/post/<int:post_id>')
    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('<h3>過去從未消亡,它甚至從未過去</h3>')
        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
會話技術
相關文章
相關標籤/搜索