Flask中的路由

endpoint 别名不能重复,对应的视图函数,默认是视图函数名。endpoint 才是路由的核心。视图函数与路由的对应关系。可以通过url_for 反向创建url

# methods允许的亲求方式methods=["GET","POST","DELETE","PUT"]大小写都可以;
# redirect_to永久重定向;
#strict_slashes是否严格要求路由匹配规则,就是url最后的/ strict_slashes=True时不能加/ @app.route('/look',endpoint="look",methods=["GET","POST"], redirect_to="/new_look",strict_slashes=True,defaults={”nid":1})
def look(nid):
return f"123{nid}" # 返回1231
# ********** 动态参数路由  **********
@app.route("/look/<int:page>") # int只能接受int 类型的
@app.route("/look/<string:page>") #string 可以接收任意类型
@app.route("/look/<page>") # 默认就是string类型
def look(page):
return f"当前访问第{page}页"
@app.route("/look/<int:page>_<int:row>")
def look(page,row):
return f"当前访问第{page}页" 应用场景 利用seng_file()
@app.route("/look/<folder>/<filename>")
def look(folder,filename):
file_path = os.path.join(folder,filename)
return send_file(file_path)
# 访问:127.0.0.1:5000/look/image/1.jpg @app.route("/look/<filename>")
def look(folder,filename):
file_path = os.path.join("image",filename)
return send_file(file_path)
# 访问:127.0.0.1:5000/look/1.jpg

Flask 初始化 实例化参数

from flask import Flask, render_template
# 如果html文件存放在了一个不是templates的文件夹中了,配置template_folder=是flask可以找到html所在位置
# static_folder="statics" 静态文件存放位置
# static_url_path='/static' 静态文件访问时的路径
app = Flask(__name__, template_folder='templatesasdf', static_folder="statics", static_url_path='/static')
app.debug = True @app.route('/')
def index():
return render_template('index.html') if __name__ == '__main__':
app.run() <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>h1h1</h1>
<img src="/static/1.jpg/">
</body>
</html>

Flask 对象配置文件

app.default_config()

{
'DEBUG': False, # 是否开启Debug模式,开启编辑时代码重启,LOG打印级别最低,错误信息透传
'TESTING': False, # 是否开启测试模式,无限接近生产环境,代码编辑时不会重启,LOG级别较高,错误信息不再透传 'PROPAGATE_EXCEPTIONS': None, # 异常传播(是否在控制台打印LOG) 当Debug或者testing开启后,自动为True
'PRESERVE_CONTEXT_ON_EXCEPTION': None, # 一两句话说不清楚,一般不用它
'SECRET_KEY': None, # 之前遇到过,在启用Session的时候,一定要有它
'PERMANENT_SESSION_LIFETIME': timedelta(days=31), # days , Session的生命周期(秒)默认31天的秒数
'USE_X_SENDFILE': False, # 是否弃用 x_sendfile
'LOGGER_NAME': None, # 日志记录器的名称
'LOGGER_HANDLER_POLICY': 'always',
'SERVER_NAME': None, # 服务访问域名
'APPLICATION_ROOT': None, # 项目的完整路径
'SESSION_COOKIE_NAME': 'session', # 在cookies中存放session加密字符串的名字
'SESSION_COOKIE_DOMAIN': None, # 在哪个域名下会产生session记录在cookies中
'SESSION_COOKIE_PATH': None, # cookies的路径
'SESSION_COOKIE_HTTPONLY': True, # 控制 cookie 是否应被设置 httponly 的标志,
'SESSION_COOKIE_SECURE': False, # 控制 cookie 是否应被设置安全标志
'SESSION_REFRESH_EACH_REQUEST': True, # 这个标志控制永久会话如何刷新
'MAX_CONTENT_LENGTH': None, # 如果设置为字节数, Flask 会拒绝内容长度大于此值的请求进入,并返回一个 413 状态码
'SEND_FILE_MAX_AGE_DEFAULT': 12, # hours 默认缓存控制的最大期限
'TRAP_BAD_REQUEST_ERRORS': False,
# 如果这个值被设置为 True ,Flask不会执行 HTTP 异常的错误处理,而是像对待其它异常一样,
# 通过异常栈让它冒泡地抛出。这对于需要找出 HTTP 异常源头的可怕调试情形是有用的。
'TRAP_HTTP_EXCEPTIONS': False,
# Werkzeug 处理请求中的特定数据的内部数据结构会抛出同样也是“错误的请求”异常的特殊的 key errors 。
# 同样地,为了保持一致,许多操作可以显式地抛出 BadRequest 异常。
# 因为在调试中,你希望准确地找出异常的原因,这个设置用于在这些情形下调试。
# 如果这个值被设置为 True ,你只会得到常规的回溯。
'EXPLAIN_TEMPLATE_LOADING': False,
'PREFERRED_URL_SCHEME': 'http', # 生成URL的时候如果没有可用的 URL 模式话将使用这个值
'JSON_AS_ASCII': True,
# 默认情况下 Flask 使用 ascii 编码来序列化对象。如果这个值被设置为 False ,
# Flask不会将其编码为 ASCII,并且按原样输出,返回它的 unicode 字符串。
# 比如 jsonfiy 会自动地采用 utf-8 来编码它然后才进行传输。
'JSON_SORT_KEYS': True,
#默认情况下 Flask 按照 JSON 对象的键的顺序来序来序列化它。
# 这样做是为了确保键的顺序不会受到字典的哈希种子的影响,从而返回的值每次都是一致的,不会造成无用的额外 HTTP 缓存。
# 你可以通过修改这个配置的值来覆盖默认的操作。但这是不被推荐的做法因为这个默认的行为可能会给你在性能的代价上带来改善。
'JSONIFY_PRETTYPRINT_REGULAR': True,
'JSONIFY_MIMETYPE': 'application/json',
'TEMPLATES_AUTO_RELOAD': None,
} app.config["SECRET_KEY"]="!@#$%^&*()" # 效率高
app.secret_key = "!@#$%^&*()" # 效率低
app.config['SESSION_COOKIE_NAME']: 'session' # 配置session的名字,默认是session,第一个字符一定不能是空格,否则拿不到session值

config配置

# setting.py
class DedugConfig:
DEBUG = True
SECRET_KEY = "!@#$%^&*()" # 效率高
PERMANENT_SESSION_LIFETIME = 3600
SESSION_COOKIE_NAME = 'I an session'
class TestConfig:
TESTING = True
SECRET_KEY = "!@#$%^&*()" # 效率高
PERMANENT_SESSION_LIFETIME = 3600
SESSION_COOKIE_NAME = 'TestConfig'
from flask import Flask, render_template

app = Flask(__name__)
# app.config["debug"] = True
# app.config["PERMANENT_SESSION_LIFETIME"] = 3600 # session存活时间
# app.config["SECRET_KEY"] = "!@#$%^&*()" # 效率高
# app.config['SESSION_COOKIE_NAME'] = 'session'
# app.default_config # 查看配置文件 # 导入两个debug配置类
from day02.setting import DebugConfig, TestConfig
# 可以快速切换开发环境和测试环境
app.config.from_object(DebugConfig) # debug模式 开发环境
# app.config.from_object(TestConfig) # testing模式 测试环境 @app.route('/')
def index():
return render_template('index.html') if __name__ == '__main__':
app.run()

Flask中的路由、实例化参数和config配置文件的更多相关文章

  1. Flask(2)- 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)

    一.装饰器的坑以及解决方法 1.使用装饰器装饰两个视图函数,代码如下 from flask import Flask, redirect, render_template, request, sess ...

  2. 第六篇 Flask中的路由系统

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...

  3. Flask 中的路由系统

    基本用法 Django的路由系统url集中在一起,而Flask的路由系统以装饰器的形式装饰在视图上如: @app.route("/",methods=["GET" ...

  4. Flask中的路由配置

    在Flask中也同样有django中的路由配置只不过没有djngo那么严格主要的参数有一下六个记住常用的就可以了 1.endpoint   反向生成url地址标志,默认视图函数名 2.methods ...

  5. flask中获取request的参数的方法

    request请求总体分为两类: 1.get请求 访问时会在地址栏直接显示参数不安全,且参数大小比较小. 2.post请求 参数不显示在地址栏,一般用户注册.登录都通过post请求完成. flask获 ...

  6. Flask中request与response参数

    目录 request response request from flask import Flask from flask import request app = Flask(__name__) ...

  7. flask中request对象获取参数的方法

    从当前request获取内容: method: 起始行,元数据 host: 起始行,元数据 path: 起始行,元数据 environ: 其中的 SERVER_PROTOCOL 是起始行,元数据 he ...

  8. 第七篇 Flask 中路由系统以及参数

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...

  9. python全栈开发day111-flask路由及其参数,Flask配置,蓝图,几个装饰器、闪现、send_file、jsonify

    1.endpoint参数,解决视图函数重名问题(包括装饰后重名问题) http://www.cnblogs.com/eric-nirnava/p/endpoint.html 每个应用程序app都有一个 ...

随机推荐

  1. ASP.NET Core 2.2 : 二十六. 应用JWT进行用户认证

    本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新方案(ASP.NET Core 系列目录) 一.什么是JWT? JWT(json web token ...

  2. 《Java 8 in Action》Chapter 6:用流收集数据

    1. 收集器简介 collect() 接收一个类型为 Collector 的参数,这个参数决定了如何把流中的元素聚合到其它数据结构中.Collectors 类包含了大量常用收集器的工厂方法,toLis ...

  3. Rest构建分布式 SpringCloud微服务架构项目

    一.开发环境:jdk  1.8.Maven  3.x.IDEA  2019.1.4.SpringBoot   2.0.7.spring Cloud  最新的稳定版  Finchley SR2   搭配 ...

  4. python 18 re模块

    目录 re 模块 1. 正则表达式 2. 匹配模式 3. 常用方法 re 模块 1. 正则表达式 \w 匹配字母(包含中文)或数字或下划线 \W 匹配非字母(包含中文)或数字或下划线 \s 匹配任意的 ...

  5. lua_在C#中执行lua脚本

    方法一:使用DoString 代码为: Lua lua = new Lua();            lua.DoString("a=13");            lua.D ...

  6. c# timestamp转换datetime

    一.Codes class Program { static void Main(string[] args) { ); } public static DateTime UnixTimeStampT ...

  7. 分布式任务调度框架 Azkaban —— Flow 1.0 的使用

    一.简介 Azkaban 主要通过界面上传配置文件来进行任务的调度.它有两个重要的概念: Job: 你需要执行的调度任务: Flow:一个获取多个 Job 及它们之间的依赖关系所组成的图表叫做 Flo ...

  8. JS核心之DOM操作 下

    目录: 1.节点类型之Document类型 2.节点类型之Element类型 3.节点类型之Text类型 4.综合小示例 -- 动态添加外部样式文件 5.查找元素的扩展方法 接上篇,我们先来看常用的三 ...

  9. 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(五)

    笔者作为一名有数年工作经验的Java程序员,仔细研读了这份手册,觉得其是一份不可多得的好材料.阿里巴巴在发布时所说,“阿里巴巴集团推出的<阿里巴巴Java开发手册(正式版)>是阿里巴巴近万 ...

  10. gym/102021/K GCPC18 背包dp算不同数和的可能

    gym/102021/K 题意: 给定n(n<=60)个直线 ,长度<=1000; 可以转化为取 计算 ans = (sum  + 10 - g) / ( n + 1)  在小于5的条件下 ...