Django如何给客户端推送消息?App推送如何实现?

(1)问题分析

面试官主要想考察的是在网页应用中,需要在处理完表单或其它类型的用户输入后,显示一个通知消息(也叫做“flash message”)给用户。

(2)核心问题讲解

Django后台可以使用django-push-notifications 推送模块来进行消息推送,也可以在Django中使用Message框架向模板中推送消息内容。(https://yiyibooks.cn/xx/django_182/ref/contrib/messages.html

App中的推送有两种方式,第一种是自己研发的,但由于研发成本高,所以大多数都采用第二种方式,也就是使用第三方工具进行推送,比如极光推送、个推、百度云推送、华为推送等。

(3)问题扩展

App有本地推送和远程推送。

本地推送通知:本地通知不需要连接网络,一般是开发人员在合适的情况下在App内发送通知,适用于能确定在某个时间时需要提醒用户的场景。

远程推送通知:远程通知必须需要连接网络,远程推送服务又称为APNs(Apple Push Notification Services),一般是服务器端发送通知。

对于用户,通知一般是指的推送通知,即本地推送通知和远程推送通知。

(4)结合项目中使用

在视图和模板中使用消息,可通过如下方法:

add_message(request, level, message, extra_tags='', fail_silently=False)

新增一条消息可通过如下方式:

from django.contrib import messages
messages.add_message(request, messages.INFO, 'Hello world.')

有几个快捷方法提供标准的方式来新增消息并带有常见的标签(这些标签通常表示消息的HTML 类型),具体如下所示。

messages.debug(request, '%s SQL statements were executed.' % count)
messages.info(request, 'Three credits remain in your account.')
messages.success(request, 'Profile details updated.')
messages.warning(request, 'Your account expires in three days.')
messages.error(request, 'Document deleted.')
点击此处
隐藏目录