python学籍管理系统 flask_taskday05-Python之flask学习 web开发最基本的需要(特别详细且适用)...
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开发最基本的需要(特别详细且适用)...相关推荐
- python上手--flask框架web开发实践-数据库
这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...
- Python Flask MongoDB Web开发:前 言
Talk is cheap , show me your code! 内 容 提 要 本书共分三部分,全面介绍如何基于Python微框架Flask进行Web开发.第一部分是Flask简介,介绍使用Fl ...
- Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)
文章目录 postman工具 get和post 如何给路由传参 解析 @app.route('')这个叫视图函数 Jinja2模板引擎 动态传参 注释.变量代码块以及控制代码块的使用 注释:ctrl+ ...
- java web开发初学_2018年学习Web开发的绝对初学者指南
java web开发初学 This post was originally published on Coder-Coder.com. 该帖子最初发布在Coder-Coder.com上 . If yo ...
- web开发 学习_是否想学习Web开发但不知道从哪里开始?
web开发 学习 by Rick West 由里克·韦斯特(Rick West) 是否想学习Web开发但不知道从哪里开始? (Want to learn web development but don ...
- 自学也能学得会的《零基础入门学习Web开发》(HTML5 CSS3)
1 Web开发是什么 很多读者可能还不明白,Web开发到底是什么. 其实,我们所说的Web开发通常相当于前端开发与后端开发的组合. 前端开发主要通过HTML.CSS.JavaScript. AJAX. ...
- 【Web前端开发】《零基础入门学习Web开发》(HTML5CSS3)(小甲鱼)
1 P1:凉凉好像挺厉害的奥? 听完了! 2 P2:HTML是用来描述网页的一种语言 官方:超文本标记语言 Hyper Text Markup Language 使用标签来描述网页 ...
- web前端开发论文写作_2019学习Web开发指南
这是一个2019年你成为前端,后端或全栈开发者的进阶指南: 你不需要学习所有的技术成为一个web开发者 这个指南只是通过简单分类列出了技术选项 我将从我的经验和参考中给出建议 1.基础前端开发者 1. ...
- 学习WEB开发,从此我爱上了火狐的FireBug
做了牛腩新闻发布系统 ,自己也就开始了真正的B/S学习!开始了真正的入门功课. 现在的Web开发工作,越来越觉得现在对WEB开发有了更高的要求.要写出漂亮的HTML代码:要编写精致的CSS样式表展示每 ...
最新文章
- nginx+lua+redis 灰度发布实现方案
- 在Tomcat配置JNDI数据源的三种方式
- ora-01034:oracle not available
- 贺利坚老师汇编课程47笔记:转移地址在寄存器或内存里
- Ubuntu下为Hadoop安装配置Hbase教程
- cad如何多选对象,12种CAD图形对象选择方法总结
- 编译bib文件,报错repeated entry
- 当下的力量(解读版)
- Boost基础篇——安装
- idv和vdi的优劣势_VDI和IDV两种桌面虚拟化的方案对比
- Java程序员:内事不决问百度,外事不决问谷歌,一遇面试就变捞
- 匈牙利算法与python实现
- 基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署
- Android版股票K线图实现方案
- 如何推算图纸上点坐标
- 快手直播带货案例解析,普通人也能复制的操作模式丨国仁网络
- 度小满金融2019年春招笔试题(研发岗)
- 【codeforces 794A】Bank Robbery
- Windows10 -64 安装tensorflow遇到的:cuda安装后找不到安装文件目录
- 最全的Android/IOS等常用的WebService服务列表(本人整理)--值得收藏 留着说不定你就用到了
热门文章
- 表格数字乘以百分比怎么算_EXCEL记住这两个快捷键,1秒种设好数字格式
- 统计个人已完成的工作量_团队工作量及团队价值贡献统计、核算、评审及提升的重要性...
- java8 list 去重_Java8-Stream在集合中的8种应用案例
- python入侵数据库数据库_一个简单的Python访问Mysql数据库例子
- python属性_深入理解python对象及属性
- 笨办法学linux dhcp,iptables使用指南(上)
- JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别
- php dao类设计,DAO数据访问对象设计 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
- sap 订单状态修改时间_SAP中对于获取订单的状态
- html5测试 iphone6sp,5款旧iPhone测试iOS运行速度:只有6S速度明显提升