安装shortuuid用于前台用户的主键:pip install shortuuid 创建模型 from datetime import datetimeimport enumfrom werkzeug.security import generate_password_hash, check_password_hashimport shortuuidfrom exts import db class GenderEnum(enum.Enum): """ 性别枚举 "…
编辑cms.models.py from exts import db from datetime import datetime class CMSUser(db.Model): __tablename__ = 'cms_user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(50), nullable=False) password = db.C…
config form from wtforms import Form, StringField, IntegerFieldfrom wtforms.validators import Email, InputRequired, Length class LoginForm(Form): email = StringField(validators=[InputRequired(message='请输入邮箱'), Email(message='邮箱格式错误')]) password = Str…
参考文档:http://python.usyiyi.cn/django/topics/auth/customizing.html Django 自带的认证系统足够应付大多数情况,但你或许不打算使用现成的认证系统.定制自己的项目的权限系统需要了解哪些一些关键点,即Django中哪些部分是能够扩展或替换的.这个文档提供了如何定制权限系统的细节. "认证"后端 在以下情形时可被扩展:当一个 User 模型对象带有用户名和密码时,且需要有别于 Django 默认的认证功能. 你可为你的模型提供…
装饰器,验证当前session中是否存在定义的user_id,没有就重定向到登录页 from flask import session, redirect, url_forfrom functools import wraps import config def login_required(func): @wraps(func) def inner(*args, **kwargs): return func(*args, **kwargs) if config.CMS_USER_ID in s…
html <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device…
数据库信息 DEBUG = TrueSQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'SQLALCHEMY_TRACK_MODIFICATIONS = False from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy() from datetime import datetimefrom exts import db class CMSUse…
模型与权限关系映射表 class CMSPersmission: """ 权限管理映射 """ # 255的二进制方式来表示 1111 1111 ALL_PERMISSION = 0b11111111 # 1. 访问者权限 VISITOR = 0b00000001 # 2. 管理帖子权限 POSTER = 0b00000010 # 3. 管理评论的权限 COMMENTER = 0b00000100 # 4. 管理板块的权限 BOARDER = 0…
用户名渲染,使用flask的g对象,在用户请求进来之后,触发视图函数之前,拿用户的信息,放到g对象里面 @bp.before_requestdef before_request(): """ 请求进入视图函数之前判断用户是否登录,若已登录,则将当前用户的信息添加到g对象里面 """ if config.CMS_USER_ID in session: user_id = session.get(config.CMS_USER_ID) user =…
定义一个宏,用于渲染static文件的时候,只需要传文件名就可以,上下两个“-”是解决渲染的时候源代码换行的情况 {% macro static(filename) -%} {{ url_for('static', filename=filename) }}{%- endmacro %} {% from 'common/_macros.html' import static %}<!DOCTYPE html><html lang="en"><head>…