#引入flask基础模块 from flask import Flask #创建项目实例 app = Flask(__name__) #路由 @app.route('/') #视图 def hello_world(): return 'Hello World!' if __name__ == '__main__': #启动实例 ''' 都是布尔值 debug:是否开启调试模式,代码更新可以自动重启服务,默认为FALSE,但flask的前端代码修改是不会自动更新的,需要手动重启 threaded:是否开启多线程 port:服务器监听端口,默认为5000,但8000之内基本被系统调用,最好选8000之外的 host:指定主机,默认为127.0.0.1,可以设置为0.0.0.0,使可以通过ip访问 ''' app.run(debug=True,threaded=True,host='0.0.0.0',port='9999')
模型设计
手动创建数据库
create database hu charset=utf8;
配置数据库
配置mysql
1.安装flask-mysqldb:用于和mysql进行交互
pip install PyMySQL
2.安装flask-SQLAlchemy:用于ORM转换
pip install Flask-SQLAlchemy
3.在manage.py文件中引入SQLAlchem类
from flask_sqlalchemy import SQLAlchemy
4.在manage.py下面配置数据库
#配置数据库
#配置数据库的链接URL
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:root@127.0.0.1/hu'
#禁止对象的修改追踪,会降低访问数据库效率
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
#创建数据库对象
db=SQLAlchemy(app)
5.定义模型
#定义模型 #班级 class Grade(model.Model): #由model.Column()确定该属性为一个字段,字段类型由参数来区分,django自动为模型设置主键,但flask需要自己设置 id=model.Column(model.Integer,primary_key=True) #django的参数是不能传参的,falsk可以 gname=model.Column(model.String(32),unique=True) ggirlnum=model.Column(model.Integer) gboynum=model.Column(model.Integer) isDelete=model.Column(model.Boolean,default=False) def __init__(self,name,ggirnum,gboynum): self.gname=name self.ggirlnum=ggirnum self.gboynum=gboynum #学生 class Student(model.Model): id=model.Column(model.Integer,primary_key=True) sname=model.Column(model.String(32)) sgender=model.Column(model.Boolean) sage=model.Column(model.Integer) scontend=model.Column(model.String(64)) #外键的定义,指向外键的id sgrade=model.Column(model.Integer,model.ForeignKey('grade.id')) isDelete=model.Column(model.Boolean,default=False) def __init__(self,name,gender,age,contend,grade): self.sname=name self.sgender=gender self.sage=age self.scontend=contend self.sgrade=grade ''' 在django中是没有__init__(),需要通过类方法来创建对象 @classmethod def createstudent(cls, name,gender,age,contend,grade): u = cls(sname=name, sgender=gender, sage=age, scontend=contend, sgrade=grade) return u '''
5.建表
if __name__ == '__main__': #建表 model.create_all()
编写视图(展示班级和学生数据
1.定义模板
①.在manage.py中引入模板函数
from flask import render_temnplate
②.在templates目录下创建grade.html,gradeStudents.html,students.html文件分别对应班级列表页,班级学生列表页,全部学生列表页
2.编写函数,绑定路由
@app.route('/grades/') def gradeList(): #获取班级数据 glist=Grade.query.all() # print(glist) return render_template('grades.html',glist=glist) @app.route('/grade/<gid>/') def gradeStudents(gid): slist=Student.query.filter(Student.sgrade==gid) # print(slist) # return '某个班级的学生列表' return render_template('gradeStudents.html',slist=slist) @app.route('/students/') def student(): slist=Student.query.all() print(slist) return render_template('students.html',slist=slist)
运行manage.py文件
打开浏览器,输入http://127.0.0.1:8000/grades/,http://127.0.0.1:8000/grade/2/,http://127.0.0.1:8000/students/进行测试,如果能正常显示班级列表页,班级学生列表页,全部学生列表页,则为成功