Javascript обновить страницу или элемент в Flask

#javascript #python #html #flask

#javascript #python #HTML #flask

Вопрос:

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

Когда я нажимаю кнопку удаления, запись удаляется, но мое перенаправление не работает, и страница не обновляется — как я могу это сделать.

Это мой маршрут, который обрабатывает удаление.

route.py

 @login_required
@webapp.route('/delete/<myrow_id>', methods=['GET'])
def delete(myrow_id):

    print(f'Deleting item: {myrow_id}')

    Systems.query.filter_by(id=myrow_id).delete()
    db.session.commit()

    # Get new systems object for page render.
    systems = Systems.query.all()
    
    return redirect(url_for('index'))
 

Фрагменты соответствующего HTML, показывающие элемент кнопки удаления и Javascript, используемый для вызова маршрута.

page.html

     <td><button type="button" class="btn btn-sm btn-danger" id={{ system.id }} onClick="delete_item(this.id)">Remove</button></td>

<script>
    function delete_item(clicked_id)
    {
        var client = new HttpClient();

        client.get('/delete/'   clicked_id, function(response) {
            // Nothing to handle.
        });
    }
</script>
 

Ответ №1:

Вы можете сделать это без какой-либо функции, используя тег . Смотрите ниже:

 <td> <button type="button" class="btn btn-sm btn-danger" id={{ system.id }}> <a href="/delete/{{system.id}}"> Remove </a> </button> </td>
 

Комментарии:

1. Функционально это отлично работает — спасибо. Однако визуально я, похоже, теряю качество кнопки начальной загрузки, поскольку она добавляет подчеркивание гиперссылки к тексту. Я пробовал искать, и люди предлагают добавить text-decoration:none; к стилю href, но я не могу заставить его работать. Есть предложения? html <button type="button" class="btn btn-sm btn-danger" id={{ system.id }}> <a style='text-decoration:none;' href="/delete/{{system.id}}">Remove</a> </button>

2. Ваш код выглядит нормально. Может быть, попробуйте использовать двойные кавычки, например <a style='text-decoration:none;' ?

3. Извините, я имею в виду "<a style='text-decoration:none"