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)
flask 第二章 endpoint重名 Flask路由 初始化配置 Falsk Config 蓝图+目录结构的更多相关文章
- flask --- 02. 路由, 初始化配置,蓝图
一.Flask 路由 1.添加路由的方式 ① ② 实例: ① @app.route("/my_de") def detail() ② def detail() app.add_ur ...
- flask模板语言,装饰器,路由及配置
1.模板语言jinja2 Flask中默认的模板语言是Jinja2 1.0 模板传参 from flask import Flask,render_template app = Flask(__nam ...
- 第二章 Jackson属性名转换+属性忽略
@Data @JsonIgnoreProperties(ignoreUnknown = true) public class MyRecord { private boolean succeed; p ...
- Spring3实战第二章第一小节 Spring bean的初始化和销毁三种方式及优先级
Spring bean的初始化和销毁有三种方式 通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法: 优先级第二通过 <bean& ...
- Flask(2)- 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)
一.装饰器的坑以及解决方法 1.使用装饰器装饰两个视图函数,代码如下 from flask import Flask, redirect, render_template, request, sess ...
- Flask 教程 第二章:模板
本文翻译自 The Flask Mega-Tutorial Part II: Templates 在Flask Mega-Tutorial系列的第二部分中,我将讨论如何使用模板. 学习完第一章之后,你 ...
- flask第一章 flask启动 路由视图 FlaskRequest jinja2 FlaskSession
一.简单了解flask web框架 优点: 小而精,组件只有session,第三方机构强烈支持flask,极其简单 缺点: 由于第三方软件的关系,稳定性相对较差,flask-session 扩展知识: ...
- 第一篇 Flask基础篇之(配置文件,路由系统,模板,请求响应,session&cookie)
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...
- Flask入门 之 endpoint
首先,要纠正两个错误! 1.flask是通过endpoint找到viewfunction(视图函数的),并不是通过路由直接找到viewfunction的. 2.是url_for(endpoint)而不 ...
随机推荐
- CentOS下使用tcpdump网络抓包
tcpdump是Linux下的截获分析网络数据包的工具,对优化系统性能有很大参考价值. 安装 tcpdump不是默认安装的,在CentOS下安装: yum install tcpdump 在Ubunt ...
- Oracle错误——tablespace 'XXXX' does not exist
错误 在使用IMP命令导入Oracle数据的时候,因为导出数据的数据库表空间和导入数据的数据库表空间不同,导致导入数据失败,出现:tablespace 'XXXX' does not exist 在网 ...
- BZOJ 3473 字符串
思路 广义SAM的题目,先全部插入,然后每个字符串在SAM上匹配,如果发现当前sz小于k(就是前缀不满足条件),就跳fail(找前缀的后缀,就是找子串)到满足条件为止,然后一个满足条件的节点,它的所有 ...
- cuda cudnn tensorflow-gpu安装
Ububtu18.04下载cuda9.0 下载好后得到: CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,需要安装gcc-6与g++-6 查看当前版本 ...
- C# 如何获取可执行文件路径的上上级目录
1. DirectoryInfo di = new DirectoryInfo(string.Format(@"{0}..\..\", Application.StartupPat ...
- aop(execution()表达式)
execution(* com.tp.soft.service..*.*(..)) 整个表达式可以分为五个部分: 1.execution(): 表达式主体. 2.第一个*号:表示返回类型,*号表示所有 ...
- Web浏览器与Web服务器之间的通信过程
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:1:建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连 ...
- 简单谈谈$.merge()
var arr1 = [1,2,3]; var arr2 = [1,2,3]; console.log($.merge(arr1,arr2)) //[1,2,3,1,2,3],可见数组间只是合并,不会 ...
- 1.1 Django起步
1.1 Django起步 1.1.1. Django简介 Django开发框架(简称Django)诞生的时间是2003年的金秋时节,美国有两位程序员Adrian Holovaty和Simon ...
- Openstack中keystone与外部LDAP Server的集成
openstack中keystone鉴权的用户user和password信息,通常保存在mysql数据库的keystone库: 表local_user和表password: keystone也支持外部 ...