Flask创建项目

项目目录规划参考方案:

 mkdir LaiKe
 cd LaiKe/
 # server(server端目录)
 mkdir -p project/server
 touch project/server/models.py
 touch project/server/settings.py
 # client(client端目录)
 mkdir -p project/client
 mkdir -p project/client/static
 mkdir -p project/client/templates
 t
 ##### main 模块 ########
 # server -> main
 mkdir -p project/server/main
 touch project/server/main/__init__.py
 touch project/server/main/views.py
 # client > main
 mkdir -p project/client/templates/main
 touch -p project/client/templastes/main/home.html
 
 ####### User 模块 #######
 # server -> user
 mkdir -p project/server/user
 mkdir -p project/server/user/__init__.py
 mkdir -p project/server/user/forms.py
 mkdir -p project/server/user/views.py
 # client -> user
 mkdir -p project/client/templates/user
 touch -p project/client/templastes/user/login.html
 touch -p project/client/templastes/user/register.html
 touch -p project/client/templastes/user/members.html
 
 ######## entry模块 ##########
 #server -> entry (词条)
 mkdir -p project/server/entry/
 touch  project/server/entry/__init__.py
 touch  project/server/entry/forms.py
 touch  project/server/entry/views.py
 # client -> entry
 mkdir -p project/client/templates/entry
 touch -p project/client/templastes/entry/login.html
 touch -p project/client/templastes/entry/register.html
 touch -p project/client/templastes/entry/members.html

目录结构总结

  • app的创建:初始化的时,可以通过template_folder指定模板位置,通过static_folder指定静态资源位置

  • 蓝图的构建:通过Blueprint为每个模块定义一个蓝图对象,然后通过app.register_blueprint将各个模块通过蓝图对象集成到app中;

  • 插件的应用:一个插件通常就是一个类,插件其实就是对flask创建的app的包装,即把app当做构造方法的参数。例如:

    toolbar = DebugToolbarExtension(app)
    bootstrap = Bootstrap(app)
    login_manager = LoginManager(app)
    db = SQLAlchemy(app)  # ORM插件
    
  • Model的设计:ORM

  • Views的设计:Flask中的Views包含路由和视图函数。设计风格:RESTful 风格、非RESTful风格、前后端分离接口风格、模板风格。

Models设计

import datetime

from project.server import db, bcrypt, app


class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    email = db.Column(db.String(255), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    registered_on = db.Column(db.DateTime, nullable=False)
    admin = db.Column(db.Boolean, nullable=False, default=False)
    entries = db.relationship('Entry', backref='creator')
    def __init__(self, email, password, admin=False):
        self.email = email
        self.password = bcrypt.generate_password_hash(
            password, app.config.get('BCRYPT_LOG_ROUNDS')
        )
        self.registered_on = datetime.datetime.now()
        self.admin = admin

    def is_authenticated
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值