flask篇B3,flask模型配置流程+注册用户

1.使用命令在终端:
python app.py runserver    ----->Runs the Flask development server

python app.py runserver -h 0.0.0.0 -p 5001

自定义添加命令:
@manager.command
def init():
    print('初始化')

python app.py init

2.数据库:
mtv:
model 模型  --》数据库
template 模板
view 视图

安装:
pip install pymysql  建工路
pip install flask-sqlalchemy  实现ORM映射
pip install flask-migrate   发布命令的工具

步骤:
1.配置数据库的连接路径
 #mysql+pymysql://user:password@hostip:port/databasename
SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:root@127.0.0.1:3306/flaskday05'

2.创建exts
__init__.py中添加:
db=SQLAlchemy()  --->必须跟app联系

def create_app():
    ...
    db.init_app(app)
    return app

3.migrate:
migrate=Migrate(app=app,db=db)
manager.add_command('db',MigrateCommand)

4.创建模型:
models.py
模型就是类
class User(db.Model):  ---->user表
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    username=db.Column(db.String(15),nullable=False)
    password=db.Column(db.String(12),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.models import User
b.在终端使用命令:db
    python app.py db init ---》产生一个文件夹migrations
    python app.py db migrate --》自动产生了一个版本文件
    项目
        |---apps
        |---exts
        |---migrations   python app.py db init  一个项目只需要init一次
                |--versions 版本文件夹
                    |---c5f027995aa5_.py  --->  python app.py db migrate 迁移
                    |---5fddbc4f8c48_.py

    python app.py db upgrade  同步
    python app.py db downgrade 降级




?serverTimezone=GMT

在models.py文件中

# ORM 类 --》表
# 类对象 --》表中的一条记录
from exts import db
from datetime import datetime
# create table user(id int primarykey auto_increment,username varchar(20) not null,...)
class User(db.Model):
    # db.Column(类型,约束) 映射表中的列
    '''
    类型:
    db.Integer   int
    db.String(15)  varchar(15)
    db.Datetime datetime

    '''
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    username=db.Column(db.String(15),nullable=False)
    password=db.Column(db.String(12),nullable=False)
    phone=db.Column(db.String(11),unique=True)
    rdatetime=db.Column(db.DateTime,default=datetime.now)

    def __str__(self):
        return self.username

在view.py文件中

from flask import Blueprint,request,render_template
from apps.user.models import User
from exts import db

user_bp=Blueprint('user',__name__)


@user_bp.route('/register',methods=['POST','GET'])
def register():
    if request.method=='POST':
        username=request.form.get('username')
        password=request.form.get('password')
        repassword=request.form.get('repassword')
        phone=request.form.get('phone')
        if password==repassword:
            # 与模型结合
            # 1.找到模型类并创建对象
            user=User()
            # 2.给对象的属性赋值
            user.username=username
            user.password=password
            user.phone=phone
            # 添加
            #3.将user对象添加到session中(类似缓存)
            db.session.add(user)
            # 4.提交数据
            db.session.commit()
            return '用户注册成功'
        else:
            return'两次密码不一致'

    return render_template('user/register.html')

在apps.py文件夹__init__.py文件中

from flask import Flask
import settings
from exts import db
from apps.user.view import user_bp
def create_app():
    app=Flask(__name__,template_folder='../templates',static_folder='../static')
    app.config.from_object(settings.DevelopmentConfig)
    # 注册蓝图
    app.register_blueprint(user_bp) # 蓝图与app进行关联
    #  初始化配置db
    db.init_app(app) # 将db对象与app进行关联


    return app

在exts文件夹中的__init__.py文件中 

from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()

在register.html文件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
</head>
<body>
<h1>用户注册</h1>
<form action="{{ url_for('user.register') }}" method="post">
    <p><input type="text" name="username" placeholder="用户名"></p>
    <p><input type="password" name="password" placeholder="密码"></p>
    <p><input type="password" name="repassword" placeholder="确认密码"></p>
    <p><input type="text" name="phone" placeholder="手机号码"></p>
    <p><input type="submit" value="用户注册"></p>
</form>
</body>
</html>

在app.py文件中

from flask import Flask
from flask_script import Manager
from apps import create_app
from flask_migrate import Migrate,MigrateCommand
from exts import db
from apps.user.models import User   # 必须导,models中创一个导一个
app=create_app()
manager=Manager(app=app)
#命令工具
migrate=Migrate(app=app,db=db)
manager.add_command('db',MigrateCommand)

if __name__ == '__main__':
    manager.run()

在settings.py文件中

class Config:
    DEBUG=True
    # mysql+pymysql://user:password@hostip:port/databasename
    SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:root@127.0.0.1:3306/flaskday05'
    SQLALCHEMY_TRACK_MODIFICATIONS=False
    SQLALCHEMY_ECHO=True

class DevelopmentConfig(Config):
    ENV='development'

class ProductionConfig(Config):
    ENV='development'
    DDEBUG=False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值