用Django搭建Android端后台服务时不可避免会有推送相关需求,Django signals配合极光推送可以达到不错的效果,signals如何使用见官方文档https://docs.djangoproject.com/en/3.0/ref/signals/。
1.安装相关依赖
- 在极光官网获取AppKey及Master Secret
- 安装jpush
pip install jpush
2.编写Django项目代码
models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=20, verbose_name="标题")
content = models.TextField(verbose_name="内容")
create_time = models.DateTimeField(auto_now_add=True, verbose_name='添加时间')
update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
class Meta:
ordering = ['-create_time']
verbose_name = "文章"
verbose_name_plural = verbose_name
def __str__(self):
return self.title
admin.py
from django.contrib import admin
# Register your models here.
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ['title', 'create_time']
search_fields = ['title']
admin.site.register(Article, ArticleAdmin)
signals.py
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.http import JsonResponse
from blog.models import Article
# app_key及master_secret写在settings.py文件中,自行去极光官网申请即可
from django_jpush.settings import app_key, master_secret
import jpush
_jpush = jpush.JPush(app_key, master_secret)
_jpush.set_logging("INFO")
@receiver(post_save, sender=Article, dispatch_uid="article_created")
def create_article(sender, instance=None, created=False, **kwargs):
response = {}
if created:
try:
article_create_notification(instance.title, instance.id)
except Exception as e:
response['msg'] = str(e)
return JsonResponse(response)
def article_create_notification(title, article_id):
push = _jpush.create_push()
push.audience = jpush.all_
push.platform = jpush.all_
ios = jpush.ios(alert="Hello, IOS JPush!", sound="a.caf", extras={'k1': 'v1'})
android = jpush.android(alert="title:{},id:{}".format(title, article_id), priority=1, style=1, alert_type=1, )
push.notification = jpush.notification(alert="Hello, JPush!", android=android, ios=ios)
push.send()
apps.py
from django.apps import AppConfig
class BlogConfig(AppConfig):
name = 'blog'
def ready(self):
import blog.signals
3.启动服务器并添加内容
生成好数据文件及创建完superuser用户之后运行服务器,进入管理后台
4.查看APP端消息
成功收到推送消息
安卓Demo去极光官网下载即可,AppKey需与settings.py中配置的相同