2016-11-16 3 views
1

Я начинаю о Flask - Python. Теперь я создаю функцию комментария. В приведенном ниже коде я могу перечислить все комментарии для блога или что-то в этом роде. Но теперь я хочу создать кнопку для удаления каждого блога. Пожалуйста, сообщите мне, как я могу отправить blog_id (теперь сохранен как user_comment._id) на сервер и как запросить его на сервере.Отправка ID из HTML в Flask Python

 {% for user_comment in user_comments %} 
      <form action="{{ url_for('comments.del_comment') }}" method="post"> 
       <ul class="comments-list"> 
        <li class="comment"> 
         <a class="pull-left" href="#"> 
          <img class="avatar" src="http://bootdey.com/img/Content/user_1.jpg" alt="avatar"> 
         </a> 
         <div class="comment-body"> 
          <div class="comment-heading"> 
           <h4 class="user">{{ user_comment.email }}</h4> 
           <h5 class="time">{{ user_comment.created_date }}</h5> 
          </div> 
          <p>{{ user_comment.comment }}</p> 
         </div> 
        </li> 
        <li> 
         <button type="submit" class="btn btn-primary">Delete</button> 
        </li> 
       </ul> 
      </form> 
     {% endfor %} 

ответ

2

Фактически вы можете сохранить идентификатор каждого комментария в атрибуте данных кнопки. Затем вы определяете маршрут, например '/comments/<id>/delete/', чтобы удалить комментарий. Чтобы исключить комментарии, удаленные только путем вызова URL-адреса в вашем браузере, я предлагаю ограничить маршрут только методами DELETE и вызвать его с помощью запроса ajax.

Так что добавьте следующий маршрут к views.py

@main.route('/comments/<comment_id>/delete', methods=['DELETE']) 
def delete_comment(comment_id): 
    comment = Comment.query.get(comment_id) 
    if comment is None: 
     return jsonify(
      status='error', message='no comment with id {}'.format(comment_id)) 
    db.session.delete(comment) 
    db.session.commit() 
    return jsonify(status='ok') 

Ваши Удалять кнопки должны выглядеть следующим образом:

<button href="" class="btn btn-primary delete_comment" data-id="{{ user_comment.id }}/> 

В шаблоне добавить небольшой запрос Ajax:

<script> 
$(document).ready(function() { 

    $SCRIPT_ROOT = {{ request.script_root|tojson|safe }}; 

    // Delete comment 
    $('.delete_comment').click(function(event) { 
     var comment_id = $(this).data('id'); 
     var url = $SCRIPT_ROOT + '/comments/' + comment_id + '/delete'; 
     $.ajax({ 
     url: url, 
     type: 'DELETE', 
     }).done(function(data) { 
     location.reload(); 
     }); 
    }); 
}); 
</script> 
+0

дорогой друг, спасибо вашему предложению. Я просто заканчиваю ajax –

0

Дайте кнопку имя и значение:

<input type="submit" name ="btn1" value="delete_blog " class="btn btn-primary" /> 

Зов кнопку с колбы так:

def delete_blog(): 
    if request.method == 'POST': 
     if request.form['btn1'] == 'delete_blog': 
      pass # do something 
     else: 
      pass # do something else 
    elif request.method == 'GET': 
     return render_template('blog.html', form=form) 

Я надеюсь, что помогает, вопрос немного запутанный ,

+0

Извините, я не очень хорошо владею английским языком. Теперь у меня есть страница с большим количеством комментариев. Каждый комментарий с одним идентификатором, который я храню в databse. Теперь, когда я нажимаю кнопку удаления, html может отправлять id на сервер для обработки. С каждым user_comment у нас будет id: user_comment._id, email: user_comment.email как в HTML-файле. Но я не знаю, как передать id на сервер –

+0

Извините за отложенный ответ. На что именно вы собираетесь использовать user_comment._id? Coz, если вы пытаетесь просто избавиться от комментария по id, я бы предположил, что ответ MrLeeh выше. –