pip list 回车就可以获得我们电脑上安装过的包
ctrl+alt+I 自动缩进
Flask-WTF定义表单
from flask_wtf import Form from wtforms import StringField, PasswordField, BooleanField, SubmitField from wtforms.validators import Required, Length, Email, Regexp, EqualTo from wtforms import ValidationError from ..models import User class LoginForm(Form): email = StringField('Email', validators=[Required(), Length(1,64), Email()]) password = PasswordField('Password', validators=[Required()]) remember_me = BooleanField('Keep me logged in') submit = SubmitField('Log in') class RegistrationForm(Form): email = StringField('Email', validators=[Required(), Length(1, 64), Email()]) username = StringField('Usernam', validators=[Required(), Length(1, 64), Regexp('^[A-Za-z][A-Za-z0-9_.]*$', 0, 'Usernames must have only letters, numbers, dots or underscores')]) password = PasswordField('Password', validators=[Required(), EqualTo('password2', message='Passwords must match.')]) password2 = PasswordField('Confirm password', validators=[Required()]) submit = SubmitField('Register') def validate_email(self, field): # 自定义验证器 -- namefield验证器 if User.query.filter_by(email=field.data).first(): raise ValidationError('Email already registered.') def validate_user(self, field): if User.query.filter_by(username=field.data).first(): raise ValidationError('Usernam already in use.')
表单Flask-WTF验证器补充:https://www.cnblogs.com/sysnap/p/6568397.html
使用Flask-Login实现用户登陆和注册模块
from flask import render_template, redirect, request, url_for, flash from flask_login import login_user, logout_user, login_required from . import auth from .. import db from ..models import User from .forms import LoginForm, RegistrationForm @auth.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(email=form.email.data).first() if user is not None and user.verify_password(form.password.data): login_user(user, form.remember_me.data) # 在用户会话中把用户标记为已登陆 # 用户访问未授权的URL时会显示登陆表单,Flask-Login会把原地址保存在查询字符串的next参数中,这个参数可以从request.args字典中读取 return redirect(request.args.get(next) or url_for('main.index')) flash('Invaliid username or password.') return render_template('auth/login.html', form=form) @auth.route('/register', methods=['GET', 'POST']) def register(): form = RegistrationForm() if form.validate_on_submit(): user = User(email=form.email.data, username=form.username.data, password=form.password.data) db.session.add(user) flash('You can now login.') return redirect(url_for('auth.login')) return render_template('auth/register.html', form=form) @auth.route('/logout') @login_required def logout(): logout_user() flash('You have been logged out.') return redirect(url_for('main.index'))关于 使用工厂化函数构建项目,flask_sqlalchemy创建不了数据库的问题,解决方法如下:https://blog.csdn.net/qq850482461/article/details/75287254
#!/usr/bin/env python import os from app import create_app, db from app.models import * #一定要引入模型类否则可能出现无法使用db.create_all() from flask_script import Manager, Shell from flask_migrate import Migrate, MigrateCommand app = create_app('default') manager = Manager(app) migrate = Migrate(app, db) def make_sell_context(): return dict(app=app, db=db, User=User, Role=Role) manager.add_command('shell', Shell(make_context=make_sell_context)) manager.add_command('db', MigrateCommand) @manager.command # 创建初始数据库脚本 def create_db(): db.create_all() if __name__ == '__main__': manager.run()