Python Flask - как сообщение без перезагрузки страницы - PullRequest
0 голосов
/ 21 января 2019

Заранее благодарен за вашу помощь!

У меня есть веб-сайт, на котором пользователи могут публиковать некоторые фрагменты программного кода, такие как они, или писать комментарии под каждым постом.Для каждого действия, например, удаления поста или лайка поста, я определил маршрут, который проверяет, есть ли у пользователя права на выполнение этого действия и так далее.Это прекрасно работает.

Чего я хотел бы достичь:

Я хочу иметь возможность использовать эти функциональные возможности без перезагрузки страницы.Я пробовал это с помощью ajax-запроса, но не смог понять это.Вот некоторые из этих маршрутов:

def delete_comment(id):
    comment = Comment.query.get_or_404(id)
    post = Post.query.get_or_404(comment.post_id)
    if comment.user != current_user and post.author != current_user:
        abort(403)
    db.session.delete(comment)
    db.session.commit()
    flash('The comment has been deleted!', 'success')

    return redirect(url_for('main.home'))

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

Как я мог решить эту проблему?

1 Ответ

0 голосов
/ 21 января 2019

Для этих типов запросов я обнаружил, что javascript в сочетании с конечной точкой API REST работает хорошо - т.е. создает конечную точку REST, которая будет выполнять аналогичные / неприязнь и возвращать ответ, и чтобы кнопка / javascript выполняла вызов RESTс помощью простого сообщения или получения и измените то, что вы хотите.

@app.route('/api/v1/status', methods=['GET'])
def get_status():
    json_data = json.dumps({'status': get_status()})
    return json_data

Аналогично вы можете сделать это для сообщений с кнопками

@app.route('/api/v1/button_update', methods=['PUT'])
def update_button():
    json_data = json.dumps({'status': update_db_state()})
    return json_data 

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

...