admin.add_view (ModelView (пользователь, db.session)) не отображает пользователей - PullRequest
0 голосов
/ 02 февраля 2020

Это один файл из моей программы, при запуске не возникает ошибки, и страница администратора работает

import secrets, os
from flask_admin.contrib.sqla import ModelView
from PIL import Image
from flask import url_for, render_template, flash, redirect, request
from main import app
from main import db, bcrypt
from main.forms import SignUpForm, LoginForm, UpdateAccount
from main.models import User, Section, Purchase, Item
from flask_login import login_user, current_user, logout_user, login_required

sections = [...]

@app.route('/')
def home():
    return render_template('sectionsDisplay.html', sections=sections, sectLen=len(sections))

@app.route('/signUp', methods=['GET', 'POST'])
def SignUp():
    if current_user.is_authenticated:
        flash("You are already logged in", 'warning')
        return redirect(url_for('home'))
    form = SignUpForm()
    if form.validate_on_submit():
        hashed_pw = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
        user = User(username=form.username.data, email=form.email.data, password=hashed_pw)
        db.session.add(user)
        db.session.commit()
        flash(f'Account Created for {form.username.data}! You can now log in', 'success')
        return redirect(url_for('Login'))
    return render_template('signUp.html', form=form, title='Sign Up')


@app.route('/login', methods=['GET', 'POST'])
def Login():
    if current_user.is_authenticated:
        flash("You are already logged in", 'warning')
        return redirect(url_for('home'))
    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):
            flash(f'{user.username}! logged in', 'success')
            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'))
            #if next_page:
            #    return redirect(url_for(next_page))
            #else:
            #    return redirect(url_for('home'))
        else:
            flash('Failed Login. Please check email and password', 'danger')
    return render_template('logIn.html', form=form, title='Log In')


@app.route('/logout')
def logOut():
    logout_user()
    flash('You have been logged out', 'success')
    return redirect(url_for('home'))

def save_picture(form_picture):
    #some code that works
    return picture_fn

@app.route('/account', methods=['GET', 'POST'])
@login_required
def account():
    form = UpdateAccount()
    if form.validate_on_submit():
        if form.profile_img.data:
            previous_url = app.root_path + "/static/images/profile_pics/" + current_user.img_file
            try:
                os.unlink(previous_url)
                print("% s removed successfully" % previous_url)
            except OSError as error:
                print(error)
                print("File path can not be removed")
            profile_pic = save_picture(form.profile_img.data)
            current_user.img_file = profile_pic
        current_user.username = form.username.data
        current_user.email = form.email.data
        db.session.commit()
        flash('You account has been updated.', 'success')
        return redirect(url_for('account'))
    elif request.method == 'GET':
        form.username.data = current_user.username
        form.email.data = current_user.email
    img_file = url_for('static', filename='images/profile_pics/' + current_user.img_file)
    return render_template('account.html', title='Profile', img_file=img_file, form=form)


@app.route('/admin')
def admin():
    admin.add_view(ModelView(User, db.session))
    #return render_template('sectionsDisplay.html')

Однако всякий раз, когда я go / admin, я получаю заголовок администратора, но пользователь не появляется, даже если он у меня есть.

Изображение веб-страницы администратора

Я хотел показать, что у меня есть пользователь в моей БД, но когда Я пытаюсь запустить свой run.py в консоли py charm, он говорит мне, что из flask_login, flask_admin и flask_bcrypt не установлены, когда они. Я проверил свою консоль, и все они установлены

(base) Giangs-Air:~ giangnguyen$ pip3 install flask-admin
Requirement already satisfied: flask-admin in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (1.5.4)
Requirement already satisfied: Flask>=0.7 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from flask-admin) (1.1.1)
Requirement already satisfied: wtforms in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from flask-admin) (2.2.1)
Requirement already satisfied: Werkzeug>=0.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from Flask>=0.7->flask-admin) (0.16.1)
Requirement already satisfied: itsdangerous>=0.24 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from Flask>=0.7->flask-admin) (1.1.0)
Requirement already satisfied: click>=5.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from Flask>=0.7->flask-admin) (7.0)
Requirement already satisfied: Jinja2>=2.10.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from Flask>=0.7->flask-admin) (2.11.0)
Requirement already satisfied: MarkupSafe>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from Jinja2>=2.10.1->Flask>=0.7->flask-admin) (1.1.1)

Регистрация веб-сайта все еще работает, и я удалил кеш, убедившись, что это не старая версия кода.

Надеюсь У меня нет полного понимания того, как flask и все работает,

Я не уверен, почему вкладка «Пользователь» не отображается, я в настоящее время просто следую учебному пособию и пытаюсь заставить его работать для что я хочу

Кроме того, как мне избавиться от ошибок импорта, потому что я импортировал flask через локальный терминал, а не через pycharm, и это не дает мне ошибки.

1 Ответ

0 голосов
/ 02 февраля 2020

Если ваш код не работает, это не проблема с компилятором или интерпретатором. Ты ошибся. Код просто делает то, что вы говорите, чтобы сделать. Посмотрите код и решите свою проблему.

...