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)

 

  

  

  

 

posted @ 2019-04-14 22:46  想扣篮的小矮子  阅读(240)  评论(0编辑  收藏  举报