如何添加消息时间发送就像facebook信使



我有一个简单的项目,我已经做了将近3天了,这个项目是一个聊天应用程序,你可以发送和接收消息。所以我想添加一个时间,当我发送一条消息时,就像在facebook信使中一样,它有"刚才"2分钟前或一小时前"6天前";,以及";我发送这条信息的年份和时间;。所以我找到了一个使用react和js的解决方案,但我对react和js一无所知。有人能帮我在我的聊天应用程序项目上添加一条像信使一样按时间发送的消息吗。


views.py

def message_view(request, sender, receiver):
if not request.user.is_authenticated:
return redirect('index')

if request.method == "GET":
return render(request, "chat/messages.html",
{'users': User.objects.exclude(username=request.user.username),
'receiver': User.objects.get(id=receiver),
'messages': Message.objects.filter(sender_id=sender, receiver_id=receiver) |
Message.objects.filter(sender_id=receiver, receiver_id=sender)})

messages.html

{% extends 'chat/chat.html' %}
{% block messages %}
{% for message in messages %}
{% if message.sender == request.user %}
<div class="card-panel right" style="width: 75%; position: relative">
<div style="position: absolute; top: 0; left:3px; font-weight: bolder" class="title">You</div>
{{ message }}
</div>
{% else %}
<div class="card-panel left blue lighten-5" style="width: 75%; position: relative">
<div style="position: absolute; top: 0; left:3px; font-weight: bolder" class="title">{{ message.sender }}</div>
{{ message }}
</div>
{% endif %}
{% endfor %}
<script>
$(function () {
$('#user{{ receiver.id }}').addClass('active');
//Call receive function each 1 seconds to check for new messages in the database
setInterval(receive,1000)
})
</script>
{% endblock %}

型号.py

class Message(models.Model):
id = models.AutoField(primary_key=True)
sender = models.ForeignKey(User, related_name='sender', on_delete=models.CASCADE)
receiver = models.ForeignKey(User, related_name='receiver', on_delete=models.CASCADE)
message = models.CharField(max_length=1500)
timestamp = models.DateTimeField(auto_now_add=True)
is_read = models.BooleanField(default=False)
def __str__(self):
return self.message
class Meta:
ordering = ('timestamp',)

models.py中有时间戳字段,您可以使用它来显示时间。你可以通过jinja模板来实现。

这将添加日期,就像它显示在脸书信使:

{{ messages.timestamp|timesince }}

添加日期的其他格式:

(这将显示日期、月份和年份(

{{ messages.timestamp||date:"d M Y" }}

(这将显示完整的日期,即的日期、月份、年份和时间

{{ messages.timestamp }}