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)而不 ...
随机推荐
- Guitar Pro中如何添加与删除音轨
Guitar Pro是一款专业的吉他打谱作曲软件,适合每一位热爱吉他并想进一步学习的大家.今天,我们一起来看看Guitar Pro软件写谱时音轨如何添加与删除. Guitar Pro能够同时支持虚拟音 ...
- HBuilder --- MUI , HTML5
一.创建简单app应用 ① ② ③连接手机 ④ 二.MUI 各组件的运用 http://dev.dcloud.net.cn/mui/snippet/ 三. HTML5plus 参考文档: http ...
- HDU 1560 DNA sequence(DNA序列)
HDU 1560 DNA sequence(DNA序列) Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- Date中before和after方法的使用
Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false: Date1.before(Date2),当Date1小于Date2时,返回TRUE,当 ...
- day_其他操作符的重载
#include <iostream> #include <stdlib.h> using namespace std; class A{ public: A(void) { ...
- ExtJs常用功能
1.判断内容是否修改 1) var cgrid = query_panel.cgrid; var v = cgrid.getValues(); //console.log(v); if (v != & ...
- .class 缓存
项目用的是Ant. 场景: Class A{ private static final String HHH="hello"; } Class B{ public void met ...
- Springboot使用alibaba的fastJson,@JSONField不起作用的问题
在Springboot中默认的JSON解析框架是jackson 今天引入alibaba的fastjson,使用@JSONField(serialize=false),让@RestController转 ...
- python 学习笔记 4 ----> dive into python 3
解析 列表解析.字典解析.集合解析 浏览本地文件系统的模块: 1 os 2 os.path 3 glob os模块:获取(和修改)本地目录.文件进程.环境变量等信息 os.path模块:包含了操作路径 ...
- 成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'express'
^ Error: Cannot find module 'express'根据提示我们就可以知道,没有找到express这个模块,解决办法就是:npm install express