我们先来做个假设:此时假设User模型有一个weight属性来表示用户的权重,修改后的代码如下:
# models.py
class User(object):
# ... 这里省略了其他属性和方法 ...
def __init__(self, ..., weight=1):
self.weight = weight
class Article(object):
# ... 这里省略了其他属性和方法 ...
def weighted_like(self, user):
self.likes += user.weight
# 假设我们用有一个save方法来保存更改后的数据到数据库
self.save()
# views.py
@app.route('/article/<int:article_id>/like', methods=['POST'])
def like_article(article_id):
# 假设定义get_current_user函数来获取当前用户
user = get_current_user()
# 从数据库中获取文章(这里省略了数据库的相关操作)
article = Article.get_by_id(article_id)
# 调用加权点赞方法
article.weighted_like(user)
# 返回新的点赞数给前端
return jsonify({'likes': article.likes}), 200
不过上面的示例代码我省略了 get_current_user 和 Article.get_by_id 等函数的实现,它们通常涉及数据库的交互;以及 Article.save 方法也需要根据你实际所使用的数据库或 ORM 来实现。

PS: 整个在线博客案例都是简化了很多步骤的,只是方便文章讲解。实际工作中我们编程的时候是需要更多考虑用户体验和业务需求来定制的;同时还需要考虑安全性(比如用户身份验证、恶意请求的处理等)和性能(例如缓存、数据库优化等)的问题!