mysql flask-login_Flask-Login用户登陆

Flask-Login

55a5a42016fd060125f8f61355d879ad.png

Flask-Login 提供用户会话管理,处理常见的登录、退出和注册的任务。

Flask-Login 没有绑定数据库,可以从数据库回调用户对象。

安装flask-login

pip install flask-login

结构

|-- app/

| |-- __init__.py

| |-- forms.py

| |-- models.py

| |-- routes.py

| `-- templates/

| |-- base.html

| |-- index.html

| |-- login.html

| `-- register.html

|-- app.db

|-- config.py

`-- microblog.py

环境变量

安装python-dotenv,避免了每次运行代码都要定义环境变量

pip install python-dotenv

根目录新建.flaskenv环境变量文件

.flaskenv:

FLASK_APP=microblog.py

microblog.py:

from app import app, db

from app.models import User, Post

@app.shell_context_processor

def make_shell_context():

return {'db': db, 'User': User, 'Post': Post}

配置项

import os

basedir = os.path.abspath(os.path.dirname(__file__))

class Config(object):

SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'

SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \

'sqlite:///' + os.path.join(basedir, 'app.db')

SQLALCHEMY_TRACK_MODIFICATIONS = False

app.dp项目运行后产生

初始化模块

app/__init__.py

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

from flask_migrate import Migrate

from config import Config

from flask_login import LoginManager

app = Flask(__name__)

app.config.from_object(Config)

db = SQLAlchemy(app)

migrate = Migrate(app, db)

login = LoginManager(app)

login.login_view = 'login'

from app import routes, models

用户加载模块

用户加载模块,完成如下2个功能:

定义用户数据库模型

加载数据库匹配用户

注意事项:

使用Flask-Login的user类必须实现下列属性方法:

方法

含义

is_authenticated

是登陆用户,返回TRUE;否则False

is_active

是活动用户,返回TRUE;否则False

is_anonymous

是匿名用户,返回TRUE;否则False

get_id()

返回用户唯一标识,用unicode编码,即使是数字类型也要转换成unicode

如果继承UserMixin类,则默认实现了上述方法;

app/models.py

from datetime import datetime

from app import db, login

from werkzeug.security import generate_password_hash, check_password_hash

from flask_login import UserMixin

class User(UserMixin,db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(64), index=True, unique=True)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值