flask LoginManager и PyMongo - PullRequest
       11

flask LoginManager и PyMongo

0 голосов
/ 17 апреля 2020

Это мой первый пост здесь, я рад, что дошел до того, что этот код набирает мою умственную энергию, наслаждаясь им все равно :) Поэтому я пытаюсь создать проект блога, используя 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...