Это мой первый пост здесь, я рад, что дошел до того, что этот код набирает мою умственную энергию, наслаждаясь им все равно :) Поэтому я пытаюсь создать проект блога, используя PyMon go и fla sh -login, LoginManager, но он просто возвращает ошибки. Я следую вместе с кодом от Мигеля Гринбергса потрясающие видео в блоге. Я несколько дней ломал голову над этим и был бы очень признателен. Спасибо и счастливой пятницы
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)