zoukankan      html  css  js  c++  java
  • flask框架入门

    flask的四剑客:

    return  字符串、return redirect(‘路由跳转’)、JSON   return jsonify(字典)、 return render_template(HTML文件路径)

    四种方法的做配置文件:

    直接对app赋值,如app.secret_key,app.config,app.debug

    app.debug  = True

    app.secret_key  =  "asdasdihasdiuh"

    app.config['SESSION_COOKIE_NAME']="python13session"

    以文件的形式

    app.config.from_pyfile(文件路径)

    以类的形式 (推荐使用)

    app.config.from_object()

    配置路由

    装饰器@app.route()

    add_url_rule( 路由地址,反向解析的名字,endpoint='默认是响应函数的函数名',view_func=响应函数对象,methods = ['GET' ,'POST'])

    路由地址的有名分组

    index/<int: uniquename>

    def view_func(uniquename):   这里的参数名一定要

    反向解析的使用

    url_for(endpoint的名字, uniquename=XXX)

    methods指定路由允许的请求方式

    flask的session的存储原理

    要是用flask的session,必须先要给app配置一个密钥app.secret = '随机字符串',还可以通过配置文件中的‘SESSION_COOKIE_NAME’设置cookies的键名。

    session是从全局设置的,要先导入session

    在响应给客户端的时候,调用session_interface 中的save_session方法,将session做加密,得到一个值value,将value设置到cookie中,cookie的key值为配置文件中的SESSION_COOKIE_NAME

    在接收客户端的请求时,调用open_session方法,从cookie中取值,解密,赋值给全局的session

    请求与响应

    flask如何设置响应头

    使用make_response方法,将响应的内容放进去

    response = make_response( 字符串 | 重定向 | JSON | HTML ) 

    response.headers['key'] = value  #请求头

    response.set_cookie('key','value')  # cookie

    模板语言:

    1、支持函数的调用,要手动加括号调用

    2、给模板传值,render_template('HTML',**dict)  # 这里的**dict就是把字典打散传值

    3、后端传原生的HTML,用Markup(f'{<html>}'), 如果前端要显示后端的值直接渲染,前端用    变量名| safe

    flask的闪现flash

    flash可以存多个值,但是只能取一次,在源码中将使用的是pop方法  (补一下源码)

    flashes = session.get("_flashes", [])  # 源码中将flash存为 _flashes,
    flashes.append((category, message))  # 可以存储多个值

    flash是基于session的

    设置值:flash(message='XXX',category='QQQ')  

    def flash(message, category="message"):  
        flashes = session.get("_flashes", [])
            flashes.append((category, message))  # flashes中是一个列表套元组
            session["_flashes"] = flashes 
            message_flashed.send(
                current_app._get_current_object(), message=message, category=category
        )

    取值:get_flashed_messages( with_categories=True, category_fliter=['QQQ'])         # category_filter必须要是列表

    def get_flashed_messages(with_categories=False, category_filter=()):
        
            flashes = _request_ctx_stack.top.flashes
        if flashes is None:
            _request_ctx_stack.top.flashes = flashes = (
                session.pop("_flashes") if "_flashes" in session else [])   # 直接pop出来了,只能使用一次
    if category_filter:

          flashes = list(filter(lambda f: f[0] in category_filter, flashes)) # f[0] 表示的是flash的message
      if not with_categories: 

         return [x[1] for x in flashes]

    return flashes
  • 相关阅读:
    ArcMap和ArcGIS Pro加载百度地图
    智能家居系列之——WIFI小车
    关于GIS中Scale和Resolution的那些事儿
    git cherry-pick
    虚拟DOM与DOM diff
    变量提升
    如果判定 this 又混乱了,就从头再读一遍……
    js 高程 Array
    Js高程-DOM
    剑指 Offer 15. 二进制中1的个数
  • 原文地址:https://www.cnblogs.com/csic716/p/12520798.html
Copyright © 2011-2022 走看看