python - 烧瓶登录管理器和 PyMongo
问题描述
这是我在这里的第一篇文章,很高兴我到达,因为这段代码正在激发我的精神能量,同样享受它:) 所以我正在尝试使用 PyMongo 和 flash-login、LoginManager 构建博客项目,但它刚刚返回错误。我正在关注 Miguel Grinbergs 精彩博客视频中的代码。几天来,我一直在摸不着头脑,非常感谢您的意见。谢谢,周五快乐
import os
import env
import model
from model import User
from flask_login import LoginManager, current_user, login_user
from flask import Flask, render_template, url_for, flash, redirect
from flask_pymongo import PyMongo
from forms import LoginForm
from werkzeug.security import generate_password_hash, check_password_hash
app = Flask(__name__)
# SSSSHHHH
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY')
app.config["MONGO_URI"] = os.environ.get("MONGO_URI")
mongo = PyMongo(app)
login = LoginManager(app)
@app.route('/')
def base():
return render_template('base.html')
@app.route('/index')
def home():
return render_template('index.html', title='Home')
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
# IF ITS RIGHT THE FIRST TIME
if form.validate_on_submit():
user = User.mongo.db.find_one(username=form.username.data).first_or_404()
if user is None or not user.check_password(form.password.data):
flash(f'Invalid username or password')
return redirect(url_for('home'))
#flash('Login success for user {}, remember_me{}'.format(
#form.username.data, form.remember_me.data))
login_user(user, remember=form.remember_me.data)
return redirect(url_for('home'))
return render_template('login.html', title='Log In', form=form)
if __name__ == '__main__':
app.run(host=os.environ.get('IP'),
port=int(os.environ.get('PORT')),
debug=True)
import os
from mini import login
from flask_login import UserMixin, User
@login.user_loader
def load_user(_id):
return User.mongo.db.find(toInt(_id))
class User(UserMixin, db.Document):
_id = ObjectId (primary_key=True)
username = StringField (unique=True)
email = StringField (unique=True)
password = StringField (default=True)
# REPR TELLS PYTHON HOW TO DEAL WITH OBJECTS OF THIS. CLASS
def __repr__(self):
return '<User {}>'.format(self.username)
解决方案
推荐阅读
- linux - 如何在没有换行符的情况下替换文件中的子字符串?
- python - 列表理解代替嵌套循环避免项目重复
- javascript - 未捕获的 SyntaxError 意外标识符
- python - Python,Pandas 根据索引值创建列
- amazon-web-services - 有没有办法仅在我收到推理请求时打开 SageMaker 模型端点
- flutter - Flutter:找不到 String.xml 文件
- c - (简而言之)它是如何工作的?
- ruby-on-rails - 如何绕过 validates_email_format_of 验证以保存 nil 电子邮件值?
- javascript - 无法向自己发出 POST 请求
- c++ - c++ 字符串中的字符被忽略