添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

很多例程都是基于flask-sqlalchemy的。

但是我使用sqlalchemy,并没有使用sqlalchemy,看中的也就是flask的灵活性。

暂时写flask的程序,但是为了以后写别的程序方便,我选择了更纯粹的ORM,sqlalchemy。

现在整理一个基于sqlalchemy的例程,算是快速入门吧。

from flask import Flask
from flask_security import Security, SQLAlchemySessionUserDatastore, \
    UserMixin, RoleMixin, login_required, auth_token_required, http_auth_required
from sqlalchemy import create_engine, Boolean, DateTime, \
    Column, Integer, String, ForeignKey
from sqlalchemy.orm import scoped_session, sessionmaker, relationship, backref
from sqlalchemy.ext.declarative import declarative_base
# 创建flask应用
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'super-secret'
app.config['SECURITY_TRACKABLE'] = True
app.config['SECURITY_REGISTERABLE'] = True
app.config['SECURITY_SEND_REGISTER_EMAIL'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///security-dev.sqlite'
app.config['SECURITY_PASSWORD_SALT'] = '951623847'
app.config['SECURITY_PASSWORD_HASH'] = 'sha512_crypt'
# 创建数据库连接
engine = create_engine('sqlite:///test.db', \
                       convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
# 创建数据库
def init_db():
    Base.metadata.create_all(bind=engine)
# 创建模型
class RolesUsers(Base):
    __tablename__ = 'roles_users'
    id = Column(Integer(), primary_key=True)
    user_id = Column('user_id', Integer(), ForeignKey('user.id'))
    role_id = Column('role_id', Integer(), ForeignKey('role.id'))
class Role(Base, RoleMixin):
    __tablename__ = 'role'
    id = Column(Integer(), primary_key=True)
    name = Column(String(80), unique=True)
    description = Column(String(255))
class User(Base, UserMixin):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    email = Column(String(255), unique=True)
    username = Column(String(255))
    password = Column(String(255))
    last_login_at = Column(DateTime())
    current_login_at = Column(DateTime())
    last_login_ip = Column(String(100))
    current_login_ip = Column(String(100))
    login_count = Column(Integer)
    active = Column(Boolean())
    confirmed_at = Column(DateTime())
    roles = relationship('Role', secondary='roles_users',
                         backref=backref('users', lazy='dynamic'))
# 设置flask-security
user_datastore = SQLAlchemySessionUserDatastore(db_session, User, Role)
security = Security(app, user_datastore)
# 创建测试用户
@app.before_first_request
def create_user():
    if not db_session.query(User).first():
        init_db()
        user_datastore.create_user(email='matt@nobien.net', password='password')
        db_session.commit()
# 创建视图
@app.route('/')
@login_required
def home():
    return 'you\'re logged in!'
@app.route('/api')  #
@http_auth_required
@auth_token_required
def token_protected():
    return 'you\'re logged in by Token!'
if __name__ == '__main__':
    app.run(host='0.0.0.0',
            port=80

转载于:https://www.cnblogs.com/jackadam/p/9549090.html

很多例程都是基于flask-sqlalchemy的。但是我使用sqlalchemy,并没有使用sqlalchemy,看中的也就是flask的灵活性。暂时写flask的程序,但是为了以后写别的程序方便,我选择了更纯粹的ORM,sqlalchemy。现在整理一个基于sqlalchemy的例程,算是快速入门吧。from flask import Flaskfrom... flask-httpauth 提供了基于装饰器类型的视图函数校验,也可也结合falsk-restful进行接口类的校验,并且提供了两种校验的策略,分别是: 用户名密码校验 flask-httpauth使用者可以通过使用auth.verify_password从写校验函数,然后调用login_required方法使用 案例一:直接使用 记录一下使用flask_security过程中遇到的一些坑。 1、覆盖默认页面(template) 在templates文件夹中创建security文件夹,创建要替换的同名html文件即可。 2、覆盖默认form 创建Form对象,(最好继承自flask_security默认的Form,默认给提供了很多表单验证方法。)在创建Security对象时指明即可,如下...
一、继承 UserMixin 类 Flask 项目可以使用 Flask-Login 插件来实现登录功能,这是一个被广泛使用的优质第三方库。 登录功能设计用户表,我们要使用 Flask-Login 就需要让 User 映射类继承 UserMixin 类。修改 models.py 如下: from flask_login import UserMixin class User(Base, UserMixin): 继承 UserMixin 是干嘛呢?我们看下源码,这个类定义在 flask_l
前情提要:由于前后端分离开发涉及到的无状态问题(前端每次请求后端接口都是新建一个会话,很难通过传统的cookie-session方式来实现验证用户登录,存储用户登录状态等功能),所以考虑了前后端传递token的方式对用户的登录状态进行验证。而为了token的安全性(以及实现的方便性),我使用了flask-httpauth这个第三方模块来实现用户token验证的功能。(注意,我这里使用的是此模块的一部分 – HTTPTokenAuth,如果要使用基本认证请左转出门) 但没想到,这是噩梦的开端 初步使用fl.
from flask import Flask from flask_httpauth import HTTPBasicAuth from werkzeug . security import generate_password_hash , check_password_hash app = Flask ( __name__ ) auth = HTTPBasicAuth () users from flask import Flask, render_template from flask_sqlalchemy import SQLAlchemy from flask_security import Security, SQLAlchemyUserDatastore, \ UserMixin, RoleMixin, login_required # Create ...
Flask-SQLAlchemy是一个基于FlaskPython Web开发框架,用于与SQLAlchemy集成的插件,可以轻松地在Flask应用程序中使用SQLAlchemy进行数据库操作。 以下是使用Flask-SQLAlchemy的基本步骤: 1. 安装Flask-SQLAlchemy 可以使用pip命令安装Flask-SQLAlchemy: pip install Flask-SQLAlchemy 2. 在Flask应用程序中配置数据库连接 在Flask应用程序中,需要配置数据库连接信息,例如: from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/mydatabase' db = SQLAlchemy(app) 以上代码中,'SQLALCHEMY_DATABASE_URI'是数据库连接的URL,可以根据自己的需要进行配置。在这个例子中,使用的是MySQL数据库。 3. 创建模型 在Flask-SQLAlchemy中,使用模型来表示数据库表。例如: class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.username 以上代码定义了一个名为“User”的模型,表示一个用户对象,包含id、username和email三个属性。 4. 数据库迁移 在使用Flask-SQLAlchemy时,可以使用Flask-Migrate插件进行数据库迁移。具体的步骤可以参考Flask-Migrate的文档。 5. 数据库操作 使用Flask-SQLAlchemy进行数据库操作非常简单,例如: # 添加一个用户 user = User(username='john', email='john@example.com') db.session.add(user) db.session.commit() # 查询所有用户 users = User.query.all() 以上代码中,首先创建一个名为“john”的用户,然后将其添加到数据库中并提交。接着,查询所有的用户。 这就是使用Flask-SQLAlchemy的基本步骤,可以根据自己的需要进行配置和使用。