• flask 第二章 endpoint重名 Flask路由 初始化配置 Falsk Config 蓝图+目录结构


    今日内容

    1.路由的分发,以下两种方式效果一样,但是都能指向同一个函数

    from flask import Flask 
    
    app=Flask(__name__)
    
    #第一种方式
    @app.route('/my_de')
    def my_de():
        return '黑河'
    
    #第二种方式
    app.add_url_rule( '/my_detail' , view_func=my_de)
    
    
    if __name__== '__main__':
        app.run(debug=True)
    

      允许请求进入的8种请求方式:

    GET
    POST
    PULL
    DELETE
    OPTIONS
    

      methods = 可迭代对象 [ ] , ( , ) 

    methods=['POST','GET']
    

      endpoint 路由Mapping 地址对应视图函数

      url_for 用来反向解析URL地址

      url_for(endpoint)

    需要了解

    strict_slashes=True #是否严格遵循路由匹配 ,默认值是True ,必须严格遵循
    defaults={'nid':3} #默认路由由参数 -视图函数中必须有一个nid(key)的形参接收
    redirect_to='/index'  # 永久重定向 301  不进入视图函数, 直接跳转
    

      动态接收参数(重要,必须要记住)

    @app.route('/get_img/<path>/<xixi>')
    
    #这里我们接收参数必须要和路由中尖括号括起来的参数一致,否则会报错
    def  get_img(path,xixi):
    
        return  f'儿砸儿砸,我是{xixi}' 
    

      

    Flask配置

    1.Flask初始化配置
        app=Flask(__name__)
        1.template_folder='tem'     #指定模板存放路径,这里我们不写的话,默认是'templates'
        2.static_folder='img3'       #指定静态文件的存放路径,默认是'static'
        3.static_url_path = '/static'  #指定静态文件访问路径
       4.static_host = None       #静态文件的存放服务器
       5.subdomain_matching = False  #遵循子域名匹配
    
    2.Flask对象配置
      app.config == app.default_config #查看默认配置 及 配置项
    
    class OBJ(object):
      DEBUG=True
    app.config.from_object(OBJ)  #记住, from_object就是点出来的属性,他能加载各种环境,例如

      我在mysettings中创建了两个类

      mysettings.py

    class Debugsetting(object):
          DEBUG = True
          SECRET_KEY = "#$%^&*$%^&*(%^&*(%^&*("
          SESSION_COOKIE_NAME = "我都说了我不是Session"
          JSONIFY_MIMETYPE = "application/javascript"
    
    
    class TestingSetting(object):
        DEBUG = False
        TESTING = True
        SECRET_KEY = "我其实是正式环境的赛克瑞特钥匙"
        SESSION_COOKIE_NAME = "SHIT"
        JSONIFY_MIMETYPE = "application/json"

      在text.py中,代码如下

    from mysetting import DebugSetting
    from mysetting import TestingSetting
    
    # app.config.from_object(DebugSetting)
    app.config.from_object(TestingSetting)
    
    
    @app.route("/index")
    def index():
        session["key"] = "value"
        return render_template("index.html")
    
    app.run()

      此时,如果你app.config.from_object(debugsetting),加载的就是debug环境,要是textingsetting,就是test环境.

    app.config['key'] = value   

      如果你指定了content-type,但是浏览器识别不出来,他会给你下载下来,你手动打开,里面有你的代码

    Flask  蓝图(Buleprint)

        app.py中

    from flask import Blueprint
    
    #我们理解buleprint为不能run的flask
    实例化的对象      标识不能重复,但是必须有,否则就报错
    user=Blueprint('user',__name)
    
    @user.route('/users')
    def func1():
        return '我是func1'

      如果你想在别的文件中引入,那么你需要注册这个蓝图

    from app import user
    from flask import Flask
    
    app=Flask(__name__)
    
    app.register_buleprint(user)
    
    if __name__  == '__main__':
        app.run(debug=True)

      

      

      

  • 相关阅读:
    python--输出spwm的数组
    爬虫二:爬取糗事百科段子
    爬虫一:爬取信息
    Python中的切片操作
    JSON
    python 中的异常处理与种类
    register的功能
    static的功能
    网络安全的认识
    VMware5.5-vCenter Converter(转换)
  • 原文地址:https://www.cnblogs.com/zty1304368100/p/10685682.html
Copyright © 2020-2023  润新知