这里搭建一个基本的Flask框架的项目结构
项目地址:https://codechina.csdn.net/sabian2/myflask.git
git clone https://codechina.csdn.net/sabian2/myflask.git
选择好的10月20日的带初始框架的最后一个版本
项目结构解析
myflask是项目目录名,需要把它mark 为source root,下面的根据目录的缩进看层次。
manage.py
项目的主运行文件,只要在目录下的命令行使用
python manage.py
即可启动项目
.gitignore
git版本控制忽略的文件
requirements.txt
项目的依赖包名称
settings.py
运行的设置文件
mainapp
一个应用,相当于拆分的网页功能
static
静态文件目录
templates
模 板文件目录
user.html
一个用户的模板文件
views
视图文件目录
user_view.py
用户视图类
models
模型文件
user_model.py
用户模型类
utils
一个通用的工具包
文件详情
settings.py
class Dev():
ENVIRONMENT='development'
DEBUG=True
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:sa123456@localhost:3306/db1?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_ECHO = True
SQLALCHEMY_DATABASE_URI:数据库的资源定位标识
格式是
数据库名称+驱动://用户名:密码@地址:端口/数据集名称?附加参数
SQLALCHEMY_TRACK_MODIFICATIONS :数据库是可扩展的
SQLALCHEMY_COMMIT_ON_TEARDOWN :回收资源时自动提交数据
SQLALCHEMY_ECHO :控制台显示数据库语句
mianapp/__ init__.py
from flask import Flask
import settings
app=Flask(__name__)
app.config.from_object(settings.Dev)
一般都以这种方式创建app,
app.config.from_object(settings.Dev)
从settings.py文件中导入设置
mainapp/templates/user.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户测试</title>
</head>
<body>
<ul>{% for k,v in cookies.items() %}
<li>{{ k }}:{{ v }}</li>
{% endfor %}
</ul>
<p>
{{ base_url }}
</p>
</body>
</html>
模板页面显示的是Jinja2语法的格式
pycharm里在如下位置调整自己项目的模板语法,输入时会有提示
mainapp/views/user_view.py
用户视图
from flask import Blueprint
from flask import request,render_template
from models.user_model import UserModel
from models import db
blue=Blueprint('userBlue',__name__,template_folder='templates')
@blue.route('/login',methods=['GET','POST'])
def login():
data={
'cookies':request.cookies,
'base_url':request.base_url
}
db.drop_all()
db.create_all()
user=UserModel()
user.name='xx'
user.phone='12345678910'
user.auth_key='123456'
db.session.add(user)
return render_template('user.html',**data)
这里定义了一个蓝图,通过蓝图配置路径,内部做了一个数据库的初始化,并添加了数据
最后渲染了模板
models/init__.py
# 在这里创建db对象,然后在模型类中被导入
from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
models/user_model.py
from models import db
class UserModel(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
name=db.Column(db.String(30),nullable=False)
auth_key = db.Column(db.String(100),nullable=False)
phone=db.Column(db.String(11),unique=True)
这里建立一个模型,和数据库的表是对应的
manage.py
from mainapp import app
from mainapp.views import user_view
# from flask_script import Manager
from models import db
if __name__ == '__main__':
# 注册蓝图路由
app.register_blueprint(user_view.blue,url_prefix='/user')
db.init_app(app)
# manager=Manager(app)
# manager.run()
app.run(host='localhost',port=5000,debug=True)
上面的是导入的包
下面的是运行程序的步骤
app.register_blueprint注册蓝图路由,并添加前缀
db.init_app(app)启动数据库
app.run(host=‘localhost’,port=5000,debug=True),以括号内的配置启动
因为flask高版本缺少一部分文件,所以flask-script插件的方法已经用不了了。
运行程序
直接运行manage.py文件即可,或在命令行输入
python manage.py
启动后进入做的页面可以看到
控制台会显示一些信息