Как удалить flask python
Перейти к содержимому

Как удалить flask python

  • автор:

Удаление статей из базы данных сайта на Flask

Чтобы иметь возможность удалять статьи, добавим в шаблон еще одну кнопку. Причем обособим ее в отдельную форму.

 if path %> form action=" <url_for('delete', address=path) >>" method="POST"> input type="submit" value="Удалить статью" onclick="return confirm('Точно удалить?')"> form>  endif %> 

Мы могли бы вызвать функцию удаления через onclick , но так как удаление ‒ важное действие, желательно чтобы пользователь подтвердил свои намерения, поэтому в onclick мы вставляем вызов js-функции confirm , а функцию удаления вызываем через атрибут action .

Атрибуту action формы присваивается адрес, на который происходит перенаправление после отправки формы. Когда этого атрибута нет, то возвращается сама страница (такой вариант используется в первой форме).

Обособление формы удаления в if выполнено для того, чтобы на главной странице не было кнопки удаления. Она там не нужна.

Функция delete будет выглядеть так:

@app.route('/del/', methods=('POST',)) def delete(address): con = sqlite3.connect(db_name) id, title = con.execute('SELECT id, h1 FROM articles WHERE path=?', (address,)).fetchone() con.execute('DELETE FROM articles WHERE >, (id,)) con.execute('DELETE FROM dates WHERE content = ?', (id,)) con.commit() con.close() flash('Статья "<>" была удалена!'.format(title), 'success') return redirect(url_for('index')) 

Не забываем, что кроме самой статьи надо удалить все связанные с ней даты.

Мы не создаем отдельный шаблон для адреса удаления, так как при безошибочной работе функции никогда не перейдем на страницу по этому адресу. Вместо этого выполняется редирект на главную страницу.

Как удалить файлы с сервера с помощью Flask

Как я могу удалить этот загруженный файл с помощью функции, которая удаляет элемент? Проблема в том, что функция, которую я использую в настоящее время, удаляет только содержимое элемента (описание, цену и т.д.), но фактический файл, который был загружен в папку, конечно же, не удаляется! Это создает проблему!

Вот моя функция удаления:

# Delete Items: @app.route('/delete_item//', methods=['GET', 'POST']) @login_required def delete_item(item_id): new_id = item_id os.remove(os.path.join(app.config['UPLOADED_ITEMS_DEST'], filename)) db.session.query(Item).filter_by(item_id=new_id).delete() db.session.commit() return redirect(url_for('admin_items')) 

Поделиться Источник 30 октября 2014 в 07:24

2 ответа

@app.route('/delete_item//', methods=['GET', 'POST']) @login_required def delete_item(item_id): new_id = item_id item = self.session.query(Item).get(item_id) os.remove(os.path.join(app.config['UPLOADED_ITEMS_DEST'], item.filename)) self.session.delete(item) db.session.commit() return redirect(url_for('admin_items')) 

Конечно, вам следует реализовать правильный поиск ошибок. Посмотрите на:

Поделиться 30 октября 2014 в 13:15

Вы можете запустить команду в Python

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

Привет! Есть страница, где выводится список всех пользователей. Справа от каждого юзера — надпись «Удалить». Подскажите, как реализовать удаление записи из БД через графический интерфейс — ту самую надпись «Удалить»?

62a8b343dadbc520558516.jpeg

Для наглядности как это выглядит:

  ID .    > . Удалить  
  • Вопрос задан более года назад
  • 233 просмотра

Комментировать
Решения вопроса 1

ramzis

FullStackOverflow

@app.route('/user/delete/') def delete_user(id): # # Здесь удаляете пользователя по id. # User.query.filter_by(id=id).delete() # db.session.commit() . 

Ответ написан более года назад
Нравится 1 5 комментариев
Barsukoth @Barsukoth Автор вопроса
Улёт, спасибо)
Barsukoth @Barsukoth Автор вопроса

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

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

@app.route('/user/edit/', 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 = значение, которое на данный момент у этого пользователя:

#5 — Удаление и обновление записей

#5 - Удаление и обновление записей

За видео мы добавим дополнительный функционал к нашему веб приложению. Мы добавим возможность для редактирования и удаления определенных записей из базы данных.

Видеоурок

Работа с уже созданными записями доволи проста и не требует особых усилий. Чтобы обновлять записи, вам изначально необходимо прописать нахождение нужной записи из БД и далее процесс обновления точно такой же, как и при добавлении новой записи.

@app.route('/posts//update', methods=['POST', 'GET']) def post_update(id): article = Article.query.get(id) if request.method == "POST": article.title = request.form['title'] try: db.session.commit() return redirect('/posts') except: return "При редактировании статьи произошла ошибка" else: return render_template("post_update.html", article=article)

Чтобы выполнить удаление данных, то вам также изначально необходимо получить определенную запись и далее выполнить её удаление:

# В функции принимаем ID определенной записи @app.route('/posts//del') def post_delete(id): article = Article.query.get_or_404(id) try: db.session.delete(article) db.session.commit() return redirect('/posts') except: return "При удалении статьи произошла ошибка"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *