• Как реализовать удаление пользователя с Flask-Login и SQLAlchemy?

    Barsukoth
    @Barsukoth Автор вопроса
    Невероятные технологии, данные удаляются, изменяются... А недавно даже вывести не мог. Ещё раз спасибо :)
  • Как реализовать удаление пользователя с Flask-Login и SQLAlchemy?

    Barsukoth
    @Barsukoth Автор вопроса
    Я чуть-чуть дуб-дубом, а как сделать изменение?)
    Всё так же: у нас есть список всех пользователей, ну и кнопка изменить, которая знает id нужного юзера из ссылки (то, как мне подсказали с удалением в этом Вопросе)

    Пробую, но чет не представляю, как это может выглядеть. С документацией уже запутался. Я настругал такое:

    {% for user in users %}
        ...
        <a href="/user/edit/{{ user.id }}">Изменить</a></td>
    {% endfor %}


    Функция:
    @app.route('/user/edit/<int:id>', methods=['GET', 'POST'])
    @login_required
    def edit_user(id):
        if current_user.admin == True:
            form = EditForm()
            # Вот на этом моменте я вообще не понимаю, что добавлять в аргументы
            # Данные, которые изменяю: fullname=form.fullname.data,
            # email=form.email.data, gpa=form.gpa.data, phone=form.phone.data
            user = User.query.filter_by(id=id).update()
            if form.validate_on_submit():
                db.session.commit()
                flash('Данные изменены')
                return redirect(url_for('admin'))
            return render_template('edit_user.html', title='Изменить данные', form=form, user=user)
        flash('Изменить не получилось, нет доступа')
        return redirect(url_for('index'))


    Форма:
    class EditForm(FlaskForm):
        fullname = StringField('Фамилия, имя, отчество', validators=[DataRequired()])
        email = StringField('Email', validators=[DataRequired()])
        gpa = FloatField('Средний балл аттестата')
        phone = IntegerField('Контактный телефон')
        submit = SubmitField('Изменить')


    Веб-страничка. Просто форма для ввода, где value = значение, которое на данный момент у этого пользователя:
    <form action="" method="post">
            {{ form.hidden_tag() }}
            <p>
                {{ form.fullname.label }}<br>
                {{ form.fullname(size=64, value=user.fullname) }}<br>
                {% for error in form.fullname.errors %}
                <span style="color: red;">[{{ error }}]</span>
                {% endfor %}
            </p>
            <p>
                {{ form.email.label }}<br>
                {{ form.email(size=64, value=user.email) }}<br>
                {% for error in form.email.errors %}
                <span style="color: red;">[{{ error }}]</span>
                {% endfor %}
            </p>
            <p>
                {{ form.phone.label }}<br>
                {{ form.phone(size=32, value=user.phone) }}<br>
                {% for error in form.phone.errors %}
                <span style="color: red;">[{{ error }}]</span>
                {% endfor %}
            </p>
            <p>
                {{ form.gpa.label }}<br>
                {{ form.gpa(size=32, value=user.gpa) }}<br>
                {% for error in form.gpa.errors %}
                <span style="color: red;">[{{ error }}]</span>
                {% endfor %}
            </p>
            <p>{{ form.submit() }}</p>
        </form>


    Как сделать функцию?
  • Почти роли в Python с Flask-Login. Как ограничить доступ к одной странице для всех, кроме одного пользователя с id 5?

    Barsukoth
    @Barsukoth Автор вопроса
    Супер, спасибо!

    только current_user.get_id() в моём случае не работал (мб что-то не так завёл, хз), но получилось через if current_user.id == 5:. Круто, получается, я могу теперь просто создать boolean столбец admin и просто отметить нужных юзеров