Flask之初始
一、简介
Flask是一个基于Python实现的Web开发‘微’框架
官方文档: http://flask.pocoo.org/docs/0.12/
中文文档: http://docs.jinkan.org/docs/flask/
Flask和Django一样,也是一个基于MVC设计模式的Web框架
Flask依赖三个库
Jinja2 模板引擎
Werkzeug WSGI工具集
Itsdangerous 基于Django的签名模块。
二、hello Flask
1、新建项目
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello Flask'
if __name__ == '__main__':
app.run()
2、参数配置
在启动的时候还可以添加参数,在run()中
debug 是否开启调试模式,开启后修改过python代码会自动重启
threaded 是否开启多线程
port 启动指定服务器的端口号
host 主机,默认是127.0.0.1,指定为0.0.0.0代表本机所有ip
3、代码结构
static 静态资源文件
templates 模板文件
默认两个都可以直接使用
直接使用相对路径就好
模板渲染
render_template()
其实也是分为两个过程,加载和渲染
可使用template = Template(“<h2>呵呵</h2>”)
template.render()
静态使用,相当于反向解析
url_for(’static’,filename=‘hello.css’)
三、项目结构
flask_01 # 项目总目录
├── App # APP
│ ├── ext.py # 第三方扩展库(数据库等)
│ ├── __init__.py #APP的初始化文件,创建Flask对象,加载配置,初始化第三方库,初始化路由
│ ├── models.py # model类, 可以封装成包的形式
│ ├── settings.py # 项目配置文件,包括环境的配置以及数据库的配置
│ ├── templates # 模板文件夹
│ │ └── h1.html
│ └── views # 视图函数的包
│ ├── first.py
│ └── __init__.py 视图初始化,注册路由
├── manager.py # 项目入口文件
└── migrations #数据库迁移生成
├── alembic.ini
├── env.py
├── README
├── script.py.mako
└── versions
└── 5f72fb96463a_.py
1、manager
import os from flask_migrate import MigrateCommand
from flask_script import Manager from App import create_app env = os.environ.get("FLASK_ENV", "develop") app = create_app(env) manager = Manager(app=app)
manager.add_command('db', MigrateCommand) if __name__ == '__main__':
manager.run()
2、APP/init.py
from flask import Flask from App.ext import init_ext
from App.settings import envs
from App.views import init_view def create_app(env):
app = Flask(__name__) # 加载配置
app.config.from_object(envs.get(env)) # 初始化第三方扩展库
init_ext(app) # 初始化路由
init_view(app=app) return app
3、APP/ext.py
from flask_bootstrap import Bootstrap
from flask_migrate import Migrate
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
migrate = Migrate()
def init_ext(app):
db.init_app(app)
migrate.init_app(app, db)
Session(app)
4、APP/models.py
from App.ext import models
5、APP/settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def get_db_uri(dbinfo):
engine = dbinfo.get("ENGINE") or "sqlite"
driver = dbinfo.get("DRIVER") or "sqlite"
user = dbinfo.get("USER") or ""
password = dbinfo.get("PASSWORD") or ""
host = dbinfo.get("HOST") or ""
port = dbinfo.get("PORT") or ""
name = dbinfo.get("NAME") or ""
return "{}+{}://{}:{}@{}:{}/{}".format(engine, driver, user, password, host, port, name)
class Config:
DEBUG = False
TESTING = False
SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = "Rockdafafafafafa"
# 将session存储在redis中
SESSION_TYPE = "redis"
REDIS_HOST = "123.56.243.64"
REDIS_PORT = "6379"
REDIS_DB = 0
# session长期有效,则设定session生命周期,整数秒
ERMANENT_SESSION_LIFETIME = 24 * 60 * 60
# 是否强制加盐,混淆session
SESSION_USE_SIGNER = True
# sessons是否长期有效,false,则关闭浏览器,session失效
SESSION_PERMANENT = False
SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
SESSION_COOKIE_SECURE = True
class DevelopConfig(Config):
DEBUG = True
dbinfo = {
"ENGINE": "mysql",
"DRIVER": "pymysql",
"USER": "root",
"PASSWORD": "1",
"HOST": "localhost",
"PORT": "3306",
"NAME": "RESTful"
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
class TestConfig(Config):
TESTING = True
dbinfo = {
"ENGINE": "mysql",
"DRIVER": "pymysql",
"USER": "root",
"PASSWORD": "2",
"HOST": "localhost",
"PORT": "3306",
"NAME": "RESTful"
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
class StagingConfig(Config):
dbinfo = {
"ENGINE": "mysql",
"DRIVER": "pymysql",
"USER": "root",
"PASSWORD": "3",
"HOST": "localhost",
"PORT": "3306",
"NAME": "RESTful"
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
class ProductConfig(Config):
dbinfo = {
"ENGINE": "mysql",
"DRIVER": "pymysql",
"USER": "root",
"PASSWORD": "1",
"HOST": "localhost",
"PORT": "3306",
"NAME": "RESTful"
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
envs = {
"develop": DevelopConfig,
"testing": TestConfig,
"staging": StagingConfig,
"product": ProductConfig,
"default": DevelopConfig
}
6、APP/views/__init__.py
from App.views.first import blue def init_view(app):
app.register_blueprint(blue)
7、APP/views/first.py
from flask import Blueprint, render_template
blue = Blueprint('app', __name__)
@blue.route('/')
def hi():
return render_template('h1.html', msg='这天气适合睡觉')
Flask之初始的更多相关文章
- flask --- 01 .初始
一. 四种web框架比较 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : 优势 - 小而精, ...
- Flask 之东方不败一
1,flask的初始 flask是Python的一个轻量级的web框架,相当于django而言. 知识点Python 三大主流web框架的对比 1.Django 主要特点是大而全,集成了很多组件,例如 ...
- 第一篇 Flask初始
Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用 ...
- 初始Flask
一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架 Flask是一个基于P ...
- flask 初始
一.flask安装 这里提供两种安装方式: 第一种: pip3 install flask 第二种: pip3 install -i https://pypi.douban.com/simple/ f ...
- Flask备注4(Structure)
Flask备注4(Structure) package 通过Flask可以非常简单的通过一个module(一个py文件)创建一个简单的application.这种简单程序的文件结构如下: /youra ...
- Flask —— 使用Python和OpenShift进行即时Web开发
最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...
- [python][flask][flask-SQLAlchemy]关于flask-SQLAlchemy的初级使用教程
鉴于网上关于flask-SQLAlchemy的实例使用教程参差不齐,于此写下工作学习过程中的使用过程,以便分享交流. 对于python关于flask有一定了解的高端玩家来说,请转至flask官方开发文 ...
- flask 扩展之 -- flask-sqlalchemy
flask-sqlalchemy.md 一. 安装 $ pip install flask-sqlalchemy 二. 配置 配置选项列表 : 选项 说明 SQLALCHEMY_DATABASE_UR ...
- python web -- flask
Flask是一个简洁的 Python_web 框架. 零. virtualenv 虚拟环境配置. $ easy_install pip $ pip install virtualenv $ virtu ...
随机推荐
- 【Bug记录】uniapp开发时pages.json和manifest.json注释报错解决方案
pages.json和manifest.json注释报错问题解决 增强 pages.json和 manifest.json 开发体验 json文件写注释 用 VsCode 开发 uni-app 项目时 ...
- 移动端 web 调试神器 - Eruda
移动端 web 调试神器 - Eruda 移动端 web 调试神器 - Eruda 基本使用 效果预览 核心步骤 安装依赖 yarn add vite-plugin-html -D # or npm ...
- Oracle 对 Json 数据进行增删改
1.背景: 由于项目要求,需要对大型的 Json 数据入库到DB中(clob 类型),由于内容过长或者 oracle 版本限制,有一些熟知的处理方法是不能使用的. 精确解决问题,可以直接看第四步:[4 ...
- JAVA调用Python脚本执行
SpringBoot-web环境 <dependency> <groupId>org.springframework.boot</groupId> <arti ...
- 手把手教你安装TrueNas(基础篇)
玩过蜗牛星际,体验过黑群晖系统崩掉导致里面珍藏12t大姐姐全没了(此处有哭声),我技术又菜,自己恢复是不可能恢复的,装的盗版系统,又不可能联系群晖官方售后恢复.于是乎就想要一个稳定.开 ...
- 查看SELinux状态:
1./usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态SELinux status: enabl ...
- 如何不购买域名在云服务器上搭建HTTPS服务
step 1: 事前准备 step 1.1: 云服务器 购买一台云服务器(带有弹性公网IP),阿里云,腾讯云,华为云什么的都可以. 选择ubuntu系统 开放安全组策略(把你需要的协议/端口暴露出来) ...
- javascript 数值交换技巧
需求 现在存在var a = 1,b = 2;,要求使用javascript实现a & b数值的交换,让a = 2,b = 1. 中间变量(常规实现方式) var a = 1, b = 2; ...
- study python3【3】前人高度总结出来的不仅仅Pathon的语言习方法
这是前人写的学习python的经验体会.不单单python,all语言都是如此. 转自https://www.cnblogs.com/nokiaguy/p/9557996.html 感谢分享 下面正文 ...
- fiddler抓包配置
一.fiddler配置 打开tools-options 1.设置general,勾选对应选项 2.设置HTTPS,勾选Decrypt HTTPS traffic时,首次使用如果没有下载过fiddler ...