前后端不分离项目中,用 templates 和 semantic-ui 实现系统点赞通知页面
时间: 2023-12-06 12:44:37 浏览: 114
首先,需要在后端实现点赞功能,并将点赞的信息保存到数据库中。然后,在前端页面中,使用 templates 和 semantic-ui 来实现点赞通知页面。
1. 后端实现点赞功能
在后端,需要创建一个点赞的视图函数,该函数需要接收点赞的请求,并将点赞的信息保存到数据库中。例如:
```python
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponse, JsonResponse
from .models import Post, Like
def like_post(request, post_id):
post = get_object_or_404(Post, id=post_id)
like, created = Like.objects.get_or_create(user=request.user, post=post)
if created:
message = 'You liked this post.'
else:
message = 'You already liked this post.'
return JsonResponse({'message': message})
```
在这个视图函数中,首先通过 post_id 获取到对应的帖子对象,然后使用当前登录用户和该帖子对象创建一个 Like 对象。如果创建成功,则说明该用户之前还没有点赞过该帖子,否则说明该用户已经点赞过了。最后返回一个 JSON 格式的响应,包含点赞的信息。
2. 前端实现点赞通知页面
在前端,可以使用 templates 和 semantic-ui 来实现点赞通知页面。首先,需要在页面中引入 semantic-ui 的样式和 JavaScript 文件。例如:
```html
{% load static %}
<link rel="stylesheet" href="{% static 'semantic/semantic.min.css' %}">
<script src="{% static 'semantic/semantic.min.js' %}"></script>
```
然后,在页面中添加一个点赞按钮和一个通知框,如下所示:
```html
<div class="ui segment">
<h3>Post Title</h3>
<p>Post Content</p>
<button class="ui labeled icon button like-post" data-post-id="{{ post.id }}">
<i class="heart outline icon"></i> Like
</button>
<div class="ui message hidden like-message">
<div class="header">You liked this post.</div>
</div>
</div>
```
在这个页面中,使用了 semantic-ui 的按钮和通知框组件。点赞按钮上绑定了一个 like-post 类,同时设置了一个 data-post-id 属性,该属性保存了当前帖子的 ID。当用户点击点赞按钮时,会触发一个 JavaScript 函数。
```javascript
$(function () {
$('.like-post').click(function (event) {
event.preventDefault();
var $button = $(this);
var post_id = $button.data('post-id');
$.post('/like-post/' + post_id + '/', function (data) {
var $message = $button.siblings('.like-message');
$message.find('.header').text(data.message);
$message.removeClass('hidden').transition('fade');
});
});
});
```
在这个 JavaScript 函数中,首先使用 jQuery 获取到所有的点赞按钮,并绑定了一个 click 事件。当用户点击按钮时,会阻止默认的提交事件,并获取到该按钮绑定的 data-post-id 属性,然后使用 AJAX 发送一个 POST 请求到后端的点赞视图函数。当请求返回成功时,获取到响应中的 message 属性,并将该属性设置到通知框的标题中。最后显示通知框并使用 fade 动画效果隐藏该通知框。
以上就是一个基本的点赞通知页面的实现方法。需要注意的是,在实际开发中,还需要对用户的登录状态进行判断,以及对点赞次数进行限制等等。
阅读全文