一、简介

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之初始的更多相关文章

  1. flask --- 01 .初始

    一. 四种web框架比较 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : 优势 - 小而精, ...

  2. Flask 之东方不败一

    1,flask的初始 flask是Python的一个轻量级的web框架,相当于django而言. 知识点Python 三大主流web框架的对比 1.Django 主要特点是大而全,集成了很多组件,例如 ...

  3. 第一篇 Flask初始

    Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用 ...

  4. 初始Flask

    一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架 Flask是一个基于P ...

  5. flask 初始

    一.flask安装 这里提供两种安装方式: 第一种: pip3 install flask 第二种: pip3 install -i https://pypi.douban.com/simple/ f ...

  6. Flask备注4(Structure)

    Flask备注4(Structure) package 通过Flask可以非常简单的通过一个module(一个py文件)创建一个简单的application.这种简单程序的文件结构如下: /youra ...

  7. Flask —— 使用Python和OpenShift进行即时Web开发

    最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...

  8. [python][flask][flask-SQLAlchemy]关于flask-SQLAlchemy的初级使用教程

    鉴于网上关于flask-SQLAlchemy的实例使用教程参差不齐,于此写下工作学习过程中的使用过程,以便分享交流. 对于python关于flask有一定了解的高端玩家来说,请转至flask官方开发文 ...

  9. flask 扩展之 -- flask-sqlalchemy

    flask-sqlalchemy.md 一. 安装 $ pip install flask-sqlalchemy 二. 配置 配置选项列表 : 选项 说明 SQLALCHEMY_DATABASE_UR ...

  10. python web -- flask

    Flask是一个简洁的 Python_web 框架. 零. virtualenv 虚拟环境配置. $ easy_install pip $ pip install virtualenv $ virtu ...

随机推荐

  1. `go install`指令行为分析

    分析go install [build flags] [packages]指令做了什么,如何实现安装GO软件,我们如何编写一个软件使得可以使用该指令安装自己编写的程序. 参考go官方文档 安装位置 $ ...

  2. 使用Istio灰度发布

    目录 灰度发布 1. Istio 1.1 Istio介绍 1.2 Istio是如何工作的 2. 安装Istio 2.1 环境 2.2 得到二进制文件 2.3 安装istio 3. 部署bookinfo ...

  3. emlog 制作一个小插件(截取正文生成 xx 字摘要)的过程

    blockquote { background: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1) !important } 如果熟悉其他 PHP 平台的 ...

  4. Pydantic异步校验器深:构建高并发验证系统

    title: Pydantic异步校验器深:构建高并发验证系统 date: 2025/3/25 updated: 2025/3/25 author: cmdragon excerpt: Pydanti ...

  5. pnpm create vite my-react-app --template react-ts

    npm install -D pnpm npm install -D vite pnpm create vite my-react-app --template react-ts npx vite - ...

  6. Git 版本管理,与 SVN区别对比

    一.Git vs SVN Git 和 SVN 孰优孰好,每个人有不同的体验. Git是分布式的,SVN是集中式的 这是 Git 和 SVN 最大的区别.若能掌握这个概念,两者区别基本搞懂大半.因为 G ...

  7. rabbitmq的消息的有顺序性

    一.rabbitmq:拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点:或者就一个queue但是对应一个consumer,然后这个consumer内部用内 ...

  8. java基础之二分查找,可变参运用

    一. public class BinarySeachTest { public static void main(String[] args) { int[] arr = new int[]{22, ...

  9. MySQL 的 Change Buffer 是什么?它有什么作用?

    MySQL 的 Change Buffer 1. 什么是 Change Buffer? Change Buffer 是 MySQL InnoDB 存储引擎中的一个优化机制,用于减少磁盘 I/O 操作. ...

  10. AXUI - 极致原生体验的零依赖的国产 Web UI 框架,欢迎体验和共建!

    AXUI:专注于快速交付的国产 Web UI 框架 在日常的前端开发中,是否遇到过以下场景: 灵感乍现,希望快速通过一点代码实现原型或功能展示: 完全个人项目,开发方式自由,追求高效与便捷: 项目目标 ...