@Qsnakes

Где найти ошибку в коде?

Доброго времени суток, изучаю немного разработку решил сделать Окно авторизации, если что опыта ноль и соответственно куча ошибок.

А конкретно В 2-ух файлах
  1. # app.py
    from flask import Flask
    from config import Config
    from extensions import db, bcrypt
    from flask_login import LoginManager
    
    def create_app():
        app = Flask(__name__)
        app.config.from_object(Config)
    
        db.init_app(app)
        bcrypt.init_app(app)
    
        login_manager = LoginManager()
        login_manager.login_view = 'auth.login'
        login_manager.login_message_category = 'info'
        login_manager.init_app(app)
    
        with app.app_context():
            from .models import User  # Импорт моделей в контексте приложения
            from .views import home, register, login, logout  # Импорт представлений
    
            app.register_blueprint(home)
            app.register_blueprint(register)
            app.register_blueprint(login)
            app.register_blueprint(logout)
    
            return app



  1. from flask import Blueprint, render_template, url_for, flash, redirect, request
    from extensions import db, bcrypt
    from forms import RegistrationForm, LoginForm
    from models import User
    
    from flask_login import login_user, current_user, logout_user, login_required
    
    # Создание блюпринтов
    home = Blueprint('home', __name__)
    register = Blueprint('register', __name__)
    login = Blueprint('login', __name__)
    logout = Blueprint('logout', __name__)
    
    # Маршруты для домашней страницы
    @home.route("/")
    @home.route("/home")
    def home_page():
        return render_template('home.html')
    
    # Маршруты для регистрации
    @register.route("/register", methods=['GET', 'POST'])
    def register_page():
        form = RegistrationForm()
        if form.validate_on_submit():
            hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
            user = User(username=form.username.data, email=form.email.data, password=hashed_password)
            db.session.add(user)
            db.session.commit()
            flash('Ваш аккаунт был создан! Теперь вы можете войти', 'success')
            return redirect(url_for('login.login_page'))
        return render_template('register.html', title='Регистрация', form=form)
    
    # Маршруты для входа
    @login.route("/login", methods=['GET', 'POST'])
    def login_page():
        form = LoginForm()
        if form.validate_on_submit():
            user = User.query.filter_by(email=form.email.data).first()
            if user and bcrypt.check_password_hash(user.password, form.password.data):
                login_user(user, remember=form.remember.data)
                next_page = request.args.get('next')
                return redirect(next_page) if next_page else redirect(url_for('home.home_page'))
            else:
                flash('Вход не выполнен. Пожалуйста, проверьте email и пароль', 'danger')
        return render_template('login.html', title='Вход', form=form)
    
    # Маршруты для выхода
    @logout.route("/logout")
    def logout_page():
        logout_user()
        return redirect(url_for('home.home_page'))



В 1-ом файле ошибка в строке: login_manager.login_view = 'auth.login'
Во 2 user = User(username=form.username.data, email=form.email.data, password=hashed_password)
VSC высвечивает ошибку, как я понял что то с импортами, но я не могу понять в чем именно.
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Почитай про импорты в питоне, какой-нибудь толковый учебник (типа Лутца).
Ты делаешь относительный импорт (import .something), но это можно использовать только в крупных модулях проекта, а не в корневых файлах. Импортируй как обычно, без точки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы