使用するのは簡単フラスコ、これで十分です!

#Flask 安装依赖包及作用
- jinja2 模板语言  (flask依赖包)
- markupsafe   防止css攻击  (flask依赖包)
- werkzeug  --wkz 类似于django中的wsgi,承载服务  (flask依赖包)

1.1Flask開始

# 三行启动
from flask import Flask
app = Flask(__name__)
app.run("0.0.0.0",9527)  #监听地址,监听端口

1.2レスポンス

  1. リターン "文字列" - >のHttpResponse
  2. リターンrender_template(「htmlファイル」、変数=「文字列」) - >デフォルトの保存場所はremplatesで、リターンテンプレート依存パッケージmarkupsafe
  3. リターンリダイレクト(「/ログイン」) - >リダイレクト応答を追加-locationのヘッダー:URLアドレス、およびその後のジャンプ
  • 特別レスポンス
  1. 返すsend_file(「ファイル名+ファイル名やファイルパス」) - >ファイルを開く、あなたは自動的に戻りファイルは、ファイルタイプは、Content-Type応答ヘッダに追加するかどうかを決定します。ファイルの種類
  2. appcation / JSON:>戻りJSON標準フォーマット文字列、コンテンツ型応答の投票に追加 - ({V K})jsonify返します
    • フラスコ1.1.1バージョン、ダイレクトリターン辞書では、基本的にjsonifyランニング
    • Flask1.1.1で辞書に直接返されることがあり、辞書には、コンテンツタイプにアプリケーション/ JSONを追加した後、フラスコのデフォルトの直列化を元に戻します

1.3フラスコリクエスト

  • (request.POSTの類似Djnagoで)データを取得するにrequest.fromいるFormData
    • to_dict()の辞書のようなタイプに、そしてあなたは、[キー]の値を取得することができ、[キー]、キーが存在しない場合、エラーがKeyError例外が発生します
  • URL( `` request.GET``で同様Djnago)で取得したrequest.argsデータ
    • 辞書のようなタイプにto_dict()、および[キー]値は、[キー]を得ることができ、キーが存在しない場合**、エラーがKeyError例外を発生
  • request.filesはFomeアップロードファイルを取得します:
  • request.json
    • 要求がコンテンツタイプである場合:アプリケーション/ JSON、次にリクエストボディ内のデータはrequest.jsonにシリアライズされ、およびの形で辞書を格納します
  • request.data
    • 要求が現在のContent-TypeであるかいるFormDataフォームが含まれていない場合、リクエストボディに元のデータを保持し、「」ベースBのタイプです。ストレージ
  • request.method#リクエストメソッド
  • request.host#のホストビット:127.0.0.1:5000
  • パラメータを含むrequest.urlの#完全なURL、
  • request.path番号要求パス、ルーティングアドレス
  • request.cookies#は、ブラウザがクッキーを要求もたらすために辞書を取得します。
  • #要求ファイル、リターンがFileStorage、ファイルを保存.SAVEをrequest.files
  • request.heads取得要求ヘッダ

1.4フラスコセッション

  • クライアントによるメカニズムの親権は、クライアントは、サーバのメモリに保存され、暗号化された文字列の束を保存しました

  • 設定したセッション

    1.在Flask中设置密钥 
    app.secret_key = "@#^%&*&@^&%^#*@"
    或者:
    app.config['SECRET_KEY'] = "@#^%&*&@^&%^#*@"
    2.设置session
    session["user"]="123"
    3.获取session
    session.get('user')
    
    
    # 交由客户端保管机制
    1.登陆成功后设置session,Flask根据密钥和要设置的session键值对经过位运算,生成session,保存到内存中,需要的话就通过get获取,不需要关闭时删除,并在浏览器中设置键值对--session:string
    2.在发出请求时,根据浏览器中的--session:string和Flask中secret_key,反序列化就得到了session键值对

1.5フラスコルート

from flask import Flask  
app = Flask(__name__)  

@app.route('/',methods=("POST","GET"),endpoint='别名',defaults={"count":20} ) 
def home(count):            
count = request.args.get('count',count)  #指定页数就优先,如果没有取默认值

app.run()
  • ルール=「/」ときに最初のURL、

  • メソッド=リクエストメソッドをサポート[..、 "POST" を "GET"](クロスドメインオプション、削除、削除、更新を入れて、ポストの増加を照会を取得)

  • エンドポイントエイリアス*エイリアス同じプロジェクトを繰り返すことはできません、デフォルト値は、関数ビューの名前です。

    Mapping,别名.
    反向解析  url = url_for('别名')
  • strict_slashes = Trueを厳守ルート一致

  • defalutsのデフォルトパラメータ

  • redirect_to =「/」永久的なリダイレクト、どんなにURLにジャンプしますどのような「/」

    • シナリオ:アドレスを交換する場合、新しいアドレスに元のアドレスジャンプをクリックしてください
    #添加路由时不一定用装饰器,可以使用 
    app.add_url_rule(rule,  # 路由地址
                     view_func  #视图函数
                    )

1.6ダイナミックルーティングパラメータ

  • あなたは正規ルートを解決分類問題を解決するために、ドキュメントへのアクセス、ページングすることができます
from flask import Flask  
app = Flask(__name__)  

@app.route('/home/<page>')  #page默认类型是字符串接收 
def home(page):   # 需要传参接收          
    pass  

@app.route('/home/<page>_<id>_<id2>')  #默认类型是字符串接收 
def home(page,id,id2):   # 需要传参接收           
    pass 

app.run() 

1.7フラスコ初期設定##重要!

from flask import Flask  
app = Flask(
    __name__,
    template_folder = 'templates',   # 更改母版存放路径,默认值是templates  ##重要!!!
    static_folder = 'static',  # 指定静态文件保存目录,默认值是static    "家"  ##重要!!! 
    static_url_path = "/static",  # 静态文件访问路径,默认值是 /+static_folder  "回家的路"  ##重要!!!
    
)  

#原理
@app.route('/<filename>', )
def func(filename):
    filepath = os.path.join('img', filename)  # img就是家
    return send_file(filepath)                  # filepath就是访问路径


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

1.8フラスコインスタンス構成

  • 基本構成
from flask import Flask  
app = Flask(
    __name__,
    template_folder = 'templates',   # 更改母版存放路径,默认值是templates  ##重要!!!
    static_folder = 'static',  # 指定静态文件保存目录,默认值是static    "家"  ##重要!!! 
    static_url_path = "/static",  # 静态文件访问路径,默认值是 /+static_folder  "回家的路"  ##重要!!!
    
)  

# 实例化配置
app.debug = True # 修改代码自动重启
app.secret_key = '$%^^$'   #设置session值需要改密匙
app.session_cookie_name = 'session'  # 设置的session名称 ,默认是session
app.permanent_session_lifetime=  # session生命周期,以秒计时,默认31天

# 另外一种更改配置方式
app.config['DEBUG']= True  # 这种方式速度更快

#app.config   Flask配置
#app.defalut_config     flask默认配置

if __name__ == '__main__':
    app.run()
  • コンフィギュレーションファイルの設定(重要!!!)、高速スイッチング動作モード
# settinigs.py文件代码

class DebugConfig(object):
    """线上开发环境"""
    DEBUG = True
    SECRET_KEY = "#$%^&*($#$%^&*%$#$%^&*^%$#$%"
    PERMANENT_SESSION_LIFETIME = 3600
    SESSION_COOKIE_NAME = "I am Not Session"


class TestConfig(object):
    """测试环境"""
    TESTING = True
    SECRET_KEY = hashlib.md5(f"{time.time()}#$%^&*($#$%^&*%$#$%^&*^%$#$%{time.time()}".encode("utf8")).hexdigest()
    PERMANENT_SESSION_LIFETIME = 360000
    SESSION_COOKIE_NAME = "#$%^&*($#$%^&*%$#$%^&*^%$#$%"   # session名字
    
    
    
#配置生效
1.导入配置文件
from settings import DebugConfig,TestConfig
2.环境生效
app.config.from_object(DebugConfig)  # 线上环境
app.config.from_object(TestConfig)  # test环境,需要的时候只需要启用DebugConfig,TestConfig其中一条

1.9フラスコの青写真青写真

  • 普通のフラスコの場合と同様の青写真は、フラスコのインスタンスで実行することができない、設定不在
  1. 青写真bp_users.pyファイルを作成し、名前を変更することができます

    from flask import Blueprint
    
    bp = Blueprint('bp01', __name__,url_prefix='url前缀')  # 'bp01'第一个参数是唯一标识,整个环境不能重复!  url_prefix='url前缀',当存在多个蓝图url冲突时,在地址栏输入'url前缀',就可以访问指定的蓝图文件
    
    
    @bp.route('/user',endpoint='user')
    def user():
        return '我是蓝图函数01'
  2. 関係を構築

    # 在项目的app.run文件中
    from app01 import bp  #导入蓝图
    app.register_blueprint(bp) # 注册蓝图
  3. 指定されたパスへのアクセス

    • 逆引きは青写真では、あなたが書い形式に注意を払う必要がある場合:

      url = url_for('蓝图标识.装饰器别名')

1.10特別なデコレータ

类似于django中的中间件

  • @ app.before_request
    • ビュー要求機能に入る前に、処理を行うために実行
    • ミドルウェアdganjoで同様の要求
    • 要求Djangoのミドルウェアにおける法の実装として、
  • @ app.after_request
    • ビュー関数は、逆の実行を実行するためにした後、契約を作るために
    • ジャンゴミドルウェアで同様の応答
    • 違いは、Djangoのミドルウェアとのことです。どんなにafter_request限り、応答はすべての実行が逆になりますよう何、
  • @ App.errorhandler(エラーコード)
    • エラーリスナーのデコレータ
    • エラーコードは、先頭にのみ4(リクエストエラー)または5(サーバーエラー)であります
    • あなたは、エラー画面を再定義することができます
@app.before_request
def is_login():
    """
    校验登录状态
    :return:
    """
    path = request.path
    if path != '/login':
        if not session.get('is_login'):
            return redirect('/login')
    return None


@app.errorhandler(404)
def error(error_msg):  # 形参必须添加
    """
    校验登录状态
    :return:
    """
    return '没找到页面'

1.11CBV

  • 基本フォーマット

    from flask import view,Flask
    app = Flask(__name__)
    
    class Login(views.MethodView):    #继承MethodView,使类变成视图函数
        def get(self,*args,**kwargs):
            pass
        def post(self,*args,**kwargs):
            pass
    app.add.url_rule('/login',
                    endpoint='login',  # 如果endpoint不定义的话名称就是view_func的name,必须唯一
                    view_func=Login.as_view(name='loginlogin'),  # name就是就是view_func的名称
                    )    
    
    app.run()

2.サードパーティのコンポーネントフラスコ-セッション

  • SetDefault()辞書メソッド

    dict.setdefault(key, default=None)
    #参数
    key -- 查找的键值。
    default -- 键不存在时,设置的默认键值。
    #返回值
    如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。
  • フラスコセッションインストールパッケージ

    • app.session_interfaceデフォルトのセッション・インターフェースである、フラスコの使用は、セッションの保存場所とストレージメカニズムを選択session_interface。
    from flask import Flask, request, session
    from flask_session import Session  #导入Session
    from redis import Redis  # 导入redis
    
    app = Flask(__name__)
    app.secret_key = '$%^&*%$'  #  flask_session使用pickle转化,密钥可以不使用
    app.config['SESSION_TYPE'] = 'redis'  # 设置session存放机制,,浏览器中存的就是session_id,session存在redis中
    app.config['SESSION_REDIS'] = Redis(host='192.168.12.10', port=6379, db=10)
    Session(app)  # 使普通sesson变成flask_session
    
    # app.session_interface    #Flask利用app.session_interface 选择session存放位置和存放机制
    
    @app.route('/set')
    def sets():
        session['key'] = 'QWER'
        return 'set'
    
    @app.route('/get')
    def gets():
        return session.get('key')
    
    app.run()

おすすめ

転載: www.cnblogs.com/bigox/p/11355940.html
おすすめ