一、简介

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. 【Bug记录】uniapp开发时pages.json和manifest.json注释报错解决方案

    pages.json和manifest.json注释报错问题解决 增强 pages.json和 manifest.json 开发体验 json文件写注释 用 VsCode 开发 uni-app 项目时 ...

  2. 移动端 web 调试神器 - Eruda

    移动端 web 调试神器 - Eruda 移动端 web 调试神器 - Eruda 基本使用 效果预览 核心步骤 安装依赖 yarn add vite-plugin-html -D # or npm ...

  3. Oracle 对 Json 数据进行增删改

    1.背景: 由于项目要求,需要对大型的 Json 数据入库到DB中(clob 类型),由于内容过长或者 oracle 版本限制,有一些熟知的处理方法是不能使用的. 精确解决问题,可以直接看第四步:[4 ...

  4. JAVA调用Python脚本执行

    SpringBoot-web环境 <dependency> <groupId>org.springframework.boot</groupId> <arti ...

  5. 手把手教你安装TrueNas(基础篇)

            玩过蜗牛星际,体验过黑群晖系统崩掉导致里面珍藏12t大姐姐全没了(此处有哭声),我技术又菜,自己恢复是不可能恢复的,装的盗版系统,又不可能联系群晖官方售后恢复.于是乎就想要一个稳定.开 ...

  6. 查看SELinux状态:

    1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态SELinux status:                 enabl ...

  7. 如何不购买域名在云服务器上搭建HTTPS服务

    step 1: 事前准备 step 1.1: 云服务器 购买一台云服务器(带有弹性公网IP),阿里云,腾讯云,华为云什么的都可以. 选择ubuntu系统 开放安全组策略(把你需要的协议/端口暴露出来) ...

  8. javascript 数值交换技巧

    需求 现在存在var a = 1,b = 2;,要求使用javascript实现a & b数值的交换,让a = 2,b = 1. 中间变量(常规实现方式) var a = 1, b = 2; ...

  9. study python3【3】前人高度总结出来的不仅仅Pathon的语言习方法

    这是前人写的学习python的经验体会.不单单python,all语言都是如此. 转自https://www.cnblogs.com/nokiaguy/p/9557996.html 感谢分享 下面正文 ...

  10. fiddler抓包配置

    一.fiddler配置 打开tools-options 1.设置general,勾选对应选项 2.设置HTTPS,勾选Decrypt HTTPS traffic时,首次使用如果没有下载过fiddler ...