我正在开发一个使用Flask作为后端服务器的webapp。我存储在SQLAlchemy数据库中的帖子,我希望用户能够在不必登录的情况下对它们进行upvote / downvote。我编写了一个用于upvoting / downvoting的JavaScript函数,它增加了当前的投票数,然后更新了使用Ajax的数据库中的计数。我想确保同一个用户不会在同一个帖子上投票两次;它不必是健壮的。我读到cookie可用于此目的,或cookie和IP的组合。我很难理解如何开始:我是在JS或Flask中为用户分配cookie吗?如何检查用户是否已经投票?如果有人可以给我一个简单的例子或者指导我获得一个好的资源,我会表示同意。非常感谢。
这是我用于upvoting的Javascript部分:
$(document).ready(function() {
$('#{{ upbtnID }}').click(
function() {
var postID = "{{ answer.id }}";
var data = {
'id': "{{ answer.id }}"
};
var score = document.getElementById('{{ scoreID }}');
var scoreText = score.textContent;
var scoreToInt = parseInt(scoreText, 10);
var newScore = ++scoreToInt;
var scoreToStr = newScore.toString();
$(this).css('border-bottom-color', '#26EDEB');
score.textContent = scoreToStr;
$.ajax({
url: "/upvote",
data: JSON.stringify(data, null, '\t'),
contentType: 'application/json;charset=UTF-8',
type: 'POST',
success: function(response) {;
},
error: function(error) {
alert("Awww");
}
});
});
Flask中的相应功能:
# upvote a post
@app.route('/upvote', methods=["GET", "POST"])
def upvote():
if request.method =="POST":
thePostID = int(request.json["id"])
thePost = Answer.query.get(thePostID)
thePost.score += 1
db.session.commit()
data = thePost.score
return ('', 204)
答案 0 :(得分:0)
从Flask片段引用:
@app.route('/set_cookie')
def cookie_insertion():
redirect_to_index = redirect('/index')
response = current_app.make_response(redirect_to_index )
response.set_cookie('cookie_name',value='values')
return response