python - 用户点击赞按钮页面后不应刷新(重定向)并更新赞数
问题描述
当用户点击喜欢帖子时,网页不应该刷新(重定向)并且应该更新喜欢的计数。我怎样才能做到这一点,请帮助我。
这是我的代码块
<a style="{% if request.session.email %}pointer-events: auto;{% else %}pointer-events: none;{% endif %}"
href="/post_comment_like/{{j.id}}">
<i class="fa fa-thumbs-o-up" aria-hidden="true"
style="color: gray;"></i></a>
Views.py
:
def post_comment_like(request, id):
if (request.session.get('email') is None) or (request.session.get('email') == ""):
return HttpResponseRedirect("/home")
email = request.session.get('email')
query = Comment.objects.get(id=id)
obj_id = query.object_id
query_like = Comment_like.objects.filter(email=email)
query_like = Comment_like.objects.filter(email=email, object_id=query.id, dislike_comment="1").first()
if query_like:
query_like.delete()
save_form = Comment_like(email=email, user_name=request.session.get('name'),
content_type=query.content_type,
object_id=query.id,
content=query.content,
flag_reply=query.flag_reply,
flag_comment_id=query.flag_comment_id,
flag_level=query.flag_level,
like_comment='1')
save_form.save()
query.like_comment = '1'
query.dislike_comment = '0'
query.save()
# return redirect(request.META.get('HTTP_REFERER'))
return HttpResponseRedirect(reverse('detail', args=[str(obj_id)]))
解决方案
至于更新页面上的点赞数,这是关于带有 ajax 请求的 javascript。
- 例如,如果有人喜欢前端的帖子,那么在用户单击“赞”按钮的那一刻,应该有一个事件监听器将 ajax 请求发送到端点,就像这样
fetch('https://example/api/posts/{post_id}/likes', {
methods:'POST',
body : JSON.stringify(data),
})
django 代码上的端点应该接收请求并增加数据库上的点赞数
前端(javascript 代码)最终应该再次发送另一个 ajax 请求以获取更新的点赞数
fetch('https://example/api/posts/{post_id}/likes')
推荐阅读
- python - Snakemake 中是否有可能具有“可选”通配符或文件名的一部分?
- ibm-cloud - Watson Studio 作业 API
- typescript - typescript import *d.ts only 而不是源代码 *.ts
- javascript - 在没有 div.class 的情况下在 JS 中更改按钮的文本
- ios - 如何在 swiftUI 中创建仅选择年份的 DatePicker,并且我希望它在预先指定的年份范围内?
- c++ - 由于 Ubuntu Unity 和 XFCE 上的 Qt 应用程序观察到 Xorg 服务器内存泄漏
- css - 如何创建变量列并填充它们?
- sql - 在 SQL Server 中,如何捕获所有外部事务?
- c# - System.DllNotFoundException:'gdi32.dll 程序集:
类型: 成员:(空)' - javascript - Mongodb组然后分别计算实例数