1.首先一个Flask的Web项目的创建需求一(文章概述):一:必须实现命令工具管理App,用于在命令行输入命令对项目进行管理,对后期多多益善

二:必须实现“蓝图”管理,用于将app启动函数与路由分开管理,使得项目启动文件、API路由管理更加更加清晰

三:必须实现类与数据库之间的映射,方便的实现App中的类与数据库中的表一一映射,更加简易的实现对数据库的增、删、改、查操作

2.现在来创建一个Flask项目项目默认创建项目默认目录结构

3.实现命令工具管理App,首先需要自定义一个创建App的方法,然后安装flask-script插件,使用插件的Manager()构建对象,具体如下:为了方便直接先安装插件flask-script,先后无影响:pip install flask-script安装命令管理工具的插件

2.第一次修改默认目录。一:删除默认app启动部分代码。二:创建apps包,在init中创建项目创建的方法。三:导入自己需要的开发配置文件。四:将app交给命令工具管理插件

一.第一步

#配置文件

class Config:

# 后端代码变项目自动重新启动

ENV='development'

DEBUG=True

#mysql+pymysql://user:password@hostid:port/databasename,数据库配置

SQLALCHEMY_DATABASE_URI='mysql+pymysql://yh:123@localhost:3306/flaskday06_1'

SQLALCHEMY_TRACK_MODIFICATIONS=False

#其它。。。

二,三:第二步

from flask import Flask

import settings

def create_app():

#使用flask创建app对象,并且修改默认的静态文件与模板寻找的路径

app=Flask(__name__,template_folder='../templates',static_folder='../static')

#导入自己需要的配置文件

app.config.from_object(settings.Config)

#为App挂载蓝图

#为App挂载与数据库操作的插件

#打印路由

print(app.url_map)

return app

四:

from flask_script import Manager

from apps import create_app

app=create_app() #调用创建App的自定义方法

manager=Manager(app=app) #将app项目交给命令管理工具,方便管理数据库映射命令(其中之一)

if __name__ == '__main__':

#app.run()

manager.run()

四:命令管理工具基本使用

使用命令在终端:python app.py runserver -----项目启动

runserver -h 0.0.0.0 -p 5001 ----指定IP与PORT使用命令管理工具启动项目,之后使用会更加方便

自定义添加命令:

@manager.command #命令装饰器

def hello():

print('hello 方法')

命令使用:python app.py hello

五:使用"蓝图"管理API路由一:创建"蓝图",Blueprint()管理对应类的API构建蓝图,‘user’可以方便用于url_for()相结合

#用于存放视图函数

from flask import Blueprint

user_bp=Blueprint('user',__name__)

'''

使用蓝图管理路由,更加方便与代码清晰

'''

@user_bp.route('/')

def index():

return '首页'

@user_bp.route('/register',methods=['GET','POST'])

def register():

return '用户注册'

@user_bp.route('/show')

def show():

return '用户信息展示'

二:在创建app的方法(create_app())中挂载蓝图,使用app.register_blueprint()方法挂载蓝图

from flask import Flask

import settings

from apps.users.view import user_bp

def create_app():

#使用flask创建app对象,并且修改默认的静态文件与模板寻找的路径

app=Flask(__name__,template_folder='../templates',static_folder='../static')

#导入自己需要的配置文件

app.config.from_object(settings.Config)

#为App挂载蓝图

app.register_blueprint(user_bp)

#为App挂载与数据库操作的插件

#打印路由

print(app.url_map)

return app

四:测试蓝图是否能找到相应的API蓝图测试、命令插件测试、自定义配置文件测试蓝图成功配置的证据

六:与数据库交互。一:安装与数据库建立关系的道路插件。二:安装与数据库映射的插件。三:安装与数据库操作命令的插件。四:串起来更加方便的使用(非常棒)便于理解:与数据库交互有以下操作

增加:insert into

删除:delete from

修改:update....set

查询:select...from

.........

这些插件与App、数据库之间的关系,或者说是插件的作用:

数据放入数据库,数据持久化

flask app数据库

| pymysql(插件,用于建立关系)

| 与数据映射需要flask_sqlalchemy插件,大概操作:

| 将SQLALchemy()关联到Flask App中

| db=SQLALchemy()

| db.init_app(app)

|

ORM.映射:

类 表

属性:id,name 字段:id,name

对象 一条数据

2.现在开始安装插件:

1.pip install pymysql 驱动,先将公路联系建立起来

2.pip install flask_sqlalchemy 完成数据库映射

3.pip install flask-migrate 用于发布命令的插件pip install pymysql 的安装pip install flask_sqlalchemy 安装flask_sqlalchemy 安装成功安装命令工具migrate(不是命令管理工具,管理的是flask-script工具)数据库命令工具安装成功

3.SQLAlchemy: ORM.映射关系

flask-sqlalchemy:基于SQLAlchemy,做了提升.使程序员在开发的时候更加方便.

4.环境配置步骤:配置数据库的路径

#mysql+pymysql://user:password@hostid:port/databasename

SQLALCHEMY_DATABASE_URI='mysql+pymysql://yh:123@127.0.0.1:3306/taskday5'

#配置文件

class Config:

# 后端代码变项目自动重新启动

ENV='development'

DEBUG=True

#mysql+pymysql://user:password@hostid:port/databasename,数据库配置

SQLALCHEMY_DATABASE_URI='mysql+pymysql://yh:123@localhost:3306/taskday05_5'

SQLALCHEMY_TRACK_MODIFICATIONS=False

#其它。。。

2.创建包extends

在 __init__.py 中添加:

db=SQLAlchemy() ------------->之后必须挂载到app中,也就是create_app()方法中

#sqlalchemy插件的调用,用于映射类与数据库中的表的

from flask_sqlalchemy import SQLAlchemy

db=SQLAlchemy()

在create_app()方法中挂载,也就是使得当前App可用使用该插件

def create_app():

....

db.init_app(app)

...

return app

from flask import Flask

import settings

from extends import db

from apps.users.view import user_bp

def create_app():

#使用flask创建app对象,并且修改默认的静态文件与模板寻找的路径

app=Flask(__name__,template_folder='../templates',static_folder='../static')

#导入自己需要的配置文件

app.config.from_object(settings.Config)

#为App挂载蓝图

app.register_blueprint(user_bp)

#为App挂载与数据库操作的插件

db.init_app(app=app)

#打印路由

print(app.url_map)

return app

3.将migrate命令工具交给命令管理工具flask-script,更加方便使用

migrate:命令工具,需要与Manager(flask-script插件)关联起来,把命令交给Manager管理,操作命令影响数据库的映射

from flask_migrate import Migrate, MigrateCommand

from flask_script import Manager

from apps import create_app

from extends import db

app=create_app() #调用创建App的自定义方法

manager=Manager(app=app) #将app项目交给命令管理工具,方便管理数据库映射命令(其中之一)

#将migrate命令工具交给命令管理工具flask-script

migrate=Migrate(app=app,db=db) #指定命令管理工具影响的app,需要数据库命令

manager.add_command('db',MigrateCommand) #将命令工具的命令交给命令管理工具,然后使用“db”作为标识

if __name__ == '__main__':

#app.run()

manager.run()

4.创建模型,完成类与数据库的一一映射:

models.py

模型就是类

class User如下

class User(db.Model):

#db.Column(类型) 映射表中的列

id=db.Column(db.Integer,primary_key=True,autoincrement=True)

username=db.Column(db.String(15),nullable=False)

password=db.Column(db.String(15),nullable=False)

phone=db.Column(db.String(11),unique=True)

rdatetime=db.Column(db.DateTime,default=datetime.now)创建需要与数据库映射的类

#用于创建User类

from datetime import datetime

from extends import db

'''

使用一些命令之后,该类与数据库中的表会实现一一映射

'''

class User(db.Model):

# db.Column(类型) 映射表中的列

id = db.Column(db.Integer, primary_key=True, autoincrement=True)

username = db.Column(db.String(15), nullable=False)

password = db.Column(db.String(15), nullable=False)

phone = db.Column(db.String(11), unique=True)

rdatetime = db.Column(db.DateTime, default=datetime.now)

5.使用命令:

a.敲黑板........

在app.py中导入模型:from apps.user.model import User *一定需要*在apps中导入需要映射的类一定要数据库配置一定也要正确

b.在终端中使用命令:db

命令1:python app.py db init ----------->产生一个文件夹migrations,该命令只需要成功执行一次即可命令执行与效果显示

命令2:python app.py db migrate----->产生一个版本文件执行命令之后会生成一个版本文件

命令3:python app.py db upgrade---->完成映射使用命令完成映射的命令与验证是否成功

命令4:python app.py db downgrade-->完成映射,根据当前本版降级到上一个版本的样子

c.项目完成之后的基本目录结构:目录结构

|--apps

|--extends

|--migrations

|---versions 版本文件夹

|--6bffd38e9879_.py------>产生依赖于python app.py db migrate 的执行

|--56e4105b18ec_.py------>产生依赖于python app.py db migrate 的执行

现在移植成功之后,将它升级(与数据库映射)即可:

|--与数据库同步------>产生依赖于python app.py db upgrate命令的执行,完 成升级,完成映射。

|--与前一个数据库同步------>产生依赖于python app.py db downgrate命令的执行,完成降级,降级到当前版本的前一个版本,同时完成映射

flask之web开发最基本的,而且方便适用的东西,前边可能会麻烦一点,但是之后用起来会很爽

python学籍管理系统 flask_taskday05-Python之flask学习 web开发最基本的需要(特别详细且适用)...相关推荐

  1. python上手--flask框架web开发实践-数据库

    这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...

  2. Python Flask MongoDB Web开发:前 言

    Talk is cheap , show me your code! 内 容 提 要 本书共分三部分,全面介绍如何基于Python微框架Flask进行Web开发.第一部分是Flask简介,介绍使用Fl ...

  3. Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)

    文章目录 postman工具 get和post 如何给路由传参 解析 @app.route('')这个叫视图函数 Jinja2模板引擎 动态传参 注释.变量代码块以及控制代码块的使用 注释:ctrl+ ...

  4. java web开发初学_2018年学习Web开发的绝对初学者指南

    java web开发初学 This post was originally published on Coder-Coder.com. 该帖子最初发布在Coder-Coder.com上 . If yo ...

  5. web开发 学习_是否想学习Web开发但不知道从哪里开始?

    web开发 学习 by Rick West 由里克·韦斯特(Rick West) 是否想学习Web开发但不知道从哪里开始? (Want to learn web development but don ...

  6. 自学也能学得会的《零基础入门学习Web开发》(HTML5 CSS3)

    1 Web开发是什么 很多读者可能还不明白,Web开发到底是什么. 其实,我们所说的Web开发通常相当于前端开发与后端开发的组合. 前端开发主要通过HTML.CSS.JavaScript. AJAX. ...

  7. 【Web前端开发】《零基础入门学习Web开发》(HTML5CSS3)(小甲鱼)

    1 P1:凉凉好像挺厉害的奥?      听完了! 2 P2:HTML是用来描述网页的一种语言 官方:超文本标记语言   Hyper Text Markup Language 使用标签来描述网页    ...

  8. web前端开发论文写作_2019学习Web开发指南

    这是一个2019年你成为前端,后端或全栈开发者的进阶指南: 你不需要学习所有的技术成为一个web开发者 这个指南只是通过简单分类列出了技术选项 我将从我的经验和参考中给出建议 1.基础前端开发者 1. ...

  9. 学习WEB开发,从此我爱上了火狐的FireBug

    做了牛腩新闻发布系统 ,自己也就开始了真正的B/S学习!开始了真正的入门功课. 现在的Web开发工作,越来越觉得现在对WEB开发有了更高的要求.要写出漂亮的HTML代码:要编写精致的CSS样式表展示每 ...

最新文章

  1. nginx+lua+redis 灰度发布实现方案
  2. 在Tomcat配置JNDI数据源的三种方式
  3. ora-01034:oracle not available
  4. 贺利坚老师汇编课程47笔记:转移地址在寄存器或内存里
  5. Ubuntu下为Hadoop安装配置Hbase教程
  6. cad如何多选对象,12种CAD图形对象选择方法总结
  7. 编译bib文件,报错repeated entry
  8. 当下的力量(解读版)
  9. Boost基础篇——安装
  10. idv和vdi的优劣势_VDI和IDV两种桌面虚拟化的方案对比
  11. Java程序员:内事不决问百度,外事不决问谷歌,一遇面试就变捞
  12. 匈牙利算法与python实现
  13. 基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署
  14. Android版股票K线图实现方案
  15. 如何推算图纸上点坐标
  16. 快手直播带货案例解析,普通人也能复制的操作模式丨国仁网络
  17. 度小满金融2019年春招笔试题(研发岗)
  18. 【codeforces 794A】Bank Robbery
  19. Windows10 -64 安装tensorflow遇到的:cuda安装后找不到安装文件目录
  20. 最全的Android/IOS等常用的WebService服务列表(本人整理)--值得收藏 留着说不定你就用到了

热门文章

  1. 表格数字乘以百分比怎么算_EXCEL记住这两个快捷键,1秒种设好数字格式
  2. 统计个人已完成的工作量_团队工作量及团队价值贡献统计、核算、评审及提升的重要性...
  3. java8 list 去重_Java8-Stream在集合中的8种应用案例
  4. python入侵数据库数据库_一个简单的Python访问Mysql数据库例子
  5. python属性_深入理解python对象及属性
  6. 笨办法学linux dhcp,iptables使用指南(上)
  7. JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别
  8. php dao类设计,DAO数据访问对象设计 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
  9. sap 订单状态修改时间_SAP中对于获取订单的状态
  10. html5测试 iphone6sp,5款旧iPhone测试iOS运行速度:只有6S速度明显提升