https://www.cnblogs.com/wupeiqi/articles/7552008.html

1. 配置文件

from  flask import Flask
app =Flask(__name__)
# app.secret_key="addd"
# app.debug=True
app.config.from_object("settings.ProductionConfig") #引入settings文件.

print(app.config["DEBUG"])

@app.route("/index")
def index():
return "index" if __name__ =="__main__":
app.run()

打印结果为

False

settings 文件

SECRET_KEY ="SDADFADF"
DEBUG=True class Config(object):
DEBUG=True
SECRET_KEY="ADFADF" class ProductionConfig(Config):
DEBUG=False class TestingConfig(Config):
Testing= True

2.路由

endpoint

@app.route("/order",endpoint="n2")
def order():
print(url_for("n2"))
print(url_for("n2"))
return "user" if __name__ =="__main__":
app.run()

  输出结果:

127.0.0.1 - - [/Sep/ ::] "GET /order HTTP/1.1"  -
/order
/order

不写endpoint 默认是他的函数名称。


@app.route("/index")  #默认传递字符串类型
def index(nid,num):
print(nid)
return "index" @app.route("/order")
def order():
print(url_for("order"))
print(url_for("index"))
print(url_for("index"))
return "user"
@app.route("/xx1111",)
def xx():
print(url_for("xx"))
print(url_for("index"))
print(url_for("order"))
return "user"

打印结果:

127.0.0.1 - - [/Sep/ ::] "GET /xx1111 HTTP/1.1"  -
/xx1111
/index
/order

marksafe功能:

全局功能:

flash

蓝图

设置.

from flask import Flask
from .views.account import bpaccount
from .views.code import bpcode
app = Flask(__name__)
app.config.from_object("settings.TestingConfig") def create_app():
app=Flask(__name__)
app.config.from_object("settings.DevelopmentConfig") app.register_blueprint(bpaccount)
app.register_blueprint(bpcode)
return app

settings

class Config(object):
DEBUG =False
SECRET_KEY="ADAFA"
class ProductionConfig(Config):
DEBUG = False class DevelopmentConfig(Config):
DEBUG = False class TestingConfig(Config):
TESTING=True

manage

from zzy import create_app
app =create_app()
if __name__ == '__main__':
app.run()

  

code 视图

from flask import  Blueprint
bpcode =Blueprint("whq",__name__) @bpcode.route("/code")
def hailong():
return "海龙" @bpcode.route("/lizhanqing")
def lizhanqing():
return "李占青"

account视图

from flask import  Blueprint,render_template
bpaccount =Blueprint("xzx",__name__) @bpaccount.route("/login")
def hailong():
return render_template("login.html") @bpaccount.route("/logout")
def lizhanqing():
return "登出"

login.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> 用户登录</h1> </body>
</html>

before request 有app级别的,也有蓝图级别的

先说app级别的:

from flask import Flask,session,request,redirect
from .views.account import bpaccount
from .views.code import bpcode
app = Flask(__name__)
app.config.from_object("settings.TestingConfig") def auth():
if request.path=="/login":
return None
user_info =session.get("user_info")
if user_info:
return None return redirect("/login") def create_app():
print(66666666666)
app=Flask(__name__)
app.config.from_object("settings.DevelopmentConfig") app.register_blueprint(bpaccount)
app.register_blueprint(bpcode) app.before_request(auth)
# app级别的在登录
# @app.before_request
# def check_login():
# print("checklogin")
return app

  

蓝图级别的

account 视图

from flask import  Blueprint,render_template
bpaccount =Blueprint("xzx",__name__)

@bpaccount.before_request
def check_login():
print("before request")
@bpaccount.route("/login")
def hailong():
return render_template("login.html")

  

code视图

from flask import  Blueprint
bpcode =Blueprint("whq",__name__) @bpcode.before_request
def check_login():
print(
"before1111111111check") @bpcode.route("/code")
def hailong():
return "海龙"

1. 蓝图做目录结构的划分。

2.蓝图中应用before_request应用

3.蓝图做url的划分.

url_prefix url前添加前缀  有点像Django的include

 app.register_blueprint(bpaccount,url_prefix="/user")
app.register_blueprint(bpcode,url_prefix="/user")

url_for 反向解析,像是django的revers

from flask import  Blueprint,render_template,url_for
bpaccount =Blueprint("xzx",__name__) @bpaccount.before_request
def check_login():
print("before request") @bpaccount.route("/login")
def hailong():
print(url_for("xzx.hailong"))
print(url_for("xzx.lizhanqing"))
print(url_for("whq.hailong"))
return render_template("login.html") @bpaccount.route("/logout")
def lizhanqing():
return "登出"

结果:

/login
/logout
/code

staticfiles and templates

Flask 视图,模板,蓝图.的更多相关文章

  1. Flask视图函数与模板语法

    1.Django中的CBV模式 ​ 2.Flask中的CBV和FBV def auth(func):     def inner(*args, **kwargs):         result =  ...

  2. 第九篇 Flask 中的蓝图(BluePrint)

    第九篇 Flask 中的蓝图(BluePrint)   蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...

  3. python框架之Flask(3)-Blueprint(蓝图)

    蓝图 用途 给开发者提供清晰的目录结构. 使用 目录结构 1.创建项目. 2.在项目目录下创建与项目名同名文件夹. 3.在 test_prj 文件夹下创建 __init__.py 文件,并在其中实例化 ...

  4. Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

  5. python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)

    昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...

  6. flask中的蓝图与红图

    内容: 1.flask中的蓝图 2.flask子域名实现 3.flask中的红图 1.flask中的蓝图 一个大型项目中视图比较多,如果仅仅是写在app.py中不方便管理,蓝图就可以做到分功能分目录结 ...

  7. flask中的蓝图实现模块化的应用

    Blueprint 蓝图的基本设想是当它们注册到应用上时,它们记录将会被执行的操作. 当分派请求和生成从一个端点到另一个的 URL 时,Flask 会关联蓝图中的视图函数. 简单来说,Blueprin ...

  8. 9,Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西,在Flask中的蓝图 blueprint 也是非常宏伟的,它的作用就是将 功能 与 主服务 分开. 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的 ...

  9. flask中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

  10. flask 第九篇 蓝图 Blueprint

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

随机推荐

  1. 移动端bug之解决方式

    1.Android中元素被点击时产生的边框: * { -webkit-tap-highlight-color: rgba(250,250,250,0);   /*更改点击事件的焦点色*/} 2.去除移 ...

  2. linux中的hosts文件

    1.主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以又有了域名.域名只是在公网( ...

  3. Linux 磁盘分区存放文件和目录的数量 (inode)

    文件系统格式centos7缺省是xfs,centos6缺省是ext4,centos5缺省是ext3ext3 文件数最大支持31998个,文件系统容量最大16TB,单个文件最大2TBext4 文件数最大 ...

  4. FTP 搭建

    FTP 搭建 FTP 是 File Transfer Protocol(文件传输协议)的英文简称,它工作在 0SI 模型的第七层,TCP 模型的第四屋上,即应用层. 一.FTP 简介 FTP 会话时包 ...

  5. 11 Maven 灵活的构建

    Maven 灵活的构建 一个优秀的构建系统必须足够灵活,它应该能够让项目在不同的环境下都能成功地构建.例如,典型的项目都会有开发环境.测试环境和产品环境,这些环境的数据库配置不尽相同,那么项目构建的时 ...

  6. js实现a_b变成A B的两种方法

    1.var key = 'a_b'; var a = key.replace(/\b.|_./g, function (i) { if (i.length === 2) { i = ' ' + i[1 ...

  7. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  8. mysql实现分页的几种方式

    mysql实现分页的几种方式: 第一种:使用框架自带的pageable来进行分页 package com.cellstrain.icell.repository.repositoryImpl; imp ...

  9. 删除k8s中一直处于Terminating的资源

    1.将所有的etcd中的key值取到一个keys.yam里面,便于查询 ETCDCTL_API=3 etcdctl get "" --from-key > keys.yaml ...

  10. string的常用操作

    操作符 1.+:可以把两个字符串加起来 插入 iterator insert(iterator i, const char &ch); basic_string &insert(siz ...