2016-07-15 7 views
0

このプログラムはFlaskをベースにしています。ユーザーは 'LIKE'ボタンをクリックして投稿のlike_countを1増やすことができます。FlaskプロジェクトでAJAX経由でコールバックを取得できないのはなぜですか?

次のように、 'postid'を '/ like'関数にPOSTできず、コールバックを取得できません。ターミナルはTypeError例外を示しています。

like() missing 1 required positional argument: 'postid'.

like.html:

<a href="#" onclick="like(this, {{ post.post_id }});">LIKE({{ post.like_count }})</a> 

<script type="text/javascript"> 
    function like(doc, postid){ 
    $.ajax({ 
     url:'{{ url_for('main.like') }}', 
     data:{postid:postid}, 
     type:'POST', 
     success:function(callback){ 
      var temp = 'LIKE' + callback; 
      $(doc).text(temp) 
     } 
    });       
    } 
</script> 

views.py:

@main.route('/like', methods=['POST']) 
@login_required 
def like(postid):   
    post = Post.query.filter_by(post_id=postid).first() 
    new_count = post.like_count + 1 
    post.like_count = new_count +1 
    db.session.add(post) 
    db.session.commit() 
    return Response(new_count) 

答えて

2

あなたがいないURL値として、フォームデータとしてpostidを投稿しています。ビューのシグネチャから引数を削除し、値をrequest.formから取得します。

def like(): 
    postid = request.form['postid'] 
+0

ありがとうございます! PS、それは "request.form.get"でしょうか? – rogwan

関連する問題