zoukankan      html  css  js  c++  java
  • 在Django中使用极光推送

    用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中配置的相同

    示例代码: https://github.com/prince5460/django_jpush

  • 相关阅读:
    Python基本数据类型
    Python内存相关
    Python运算符和编码
    js比较日期大小 判断日期
    js判断一个数是不是正整数
    sql查询排序
    js获取select标签选中的值
    PL/sql配置相关
    搜狗的好玩用法
    Oracle数据库中的dual表
  • 原文地址:https://www.cnblogs.com/prince5460/p/14176297.html
Copyright © 2011-2022 走看看