django对比数据并调用企业微信接口群发

在日常工作中,需要对数据进行对比。一般来说,都是保存在数据库中,所以需要对sql语句非常熟练,常常一条命令都是几十行,表和表之间的关系是非常明显的。在得到异常数据后,需要告知特定的人群。在这里,我决定采用企业微信,为什么不用邮箱来群发呢?原因有很多,首先是安全问题,一般用程序发的邮件会被当做垃圾邮件;其次是人群中对邮箱不是经常看所以不是很方便。

一般来说,很多公司也会有企业微信端的,企业微信的消息可以到微信中更是方便了,同时企业微信也有相应的接口说明,很是方便。下面我将从企业微信创建应用,编写群发消息程序,最后实现在web中的应用。

同样的,我这里还是使用django框架下的web应用,视图就展示了查询列表,对比内容为了方便直接了网页跳转。

对比数据并显示视图

对比数据我直接采用了数据库比对:
models.py:

from django.db import models
class test_excel_info(models.Model):
    name = models.CharField('名称',max_length=20)
    pcnum = models.CharField('电脑编号',max_length=30)
    cause = models.CharField('理由',max_length=30)

class oldinfo(models.Model):
    name=models.CharField('name',max_length=20)
    pcnum=models.CharField('pcnum',max_length=30)

views.py
这里显示了对应的视图,创建了查询,删除和对比数据。

def info_show(request):
    info = models.test_excel_info.objects.all()
    return render(request,'info_list.html',{'info_list':info})

def drop_info(request):
    drop_id =request.GET.get('id')
    drop_obj = models.test_excel_info.objects.get(id=drop_id)
    drop_obj.delete()
    return redirect('/info/')


def compare_sql(request):
    cursor = connection.cursor()
    cursor.execute("insert into TestDjan_oldinfo(name,pcnum)  values ('kaik','pc112')")
    return redirect('/info/')

有很多人问我,这里views.py是后端操作,那么如何实现前端交互呢?这里以info_show为例:
可以看到我这里前后端处理得还算好,对于后端的人只要知道接口特性就行,所以如果是一个良好的前后端分离项目,为了系统的维护性,必须让后端开发者写接口文档,否则会比较难受了!
前端的关于操作显示的代码:
在这里插入图片描述
views.py中的字典对应关系。
在这里插入图片描述
运行结果图:这样编辑和删除也都是页面操作(views.py)了。
在这里插入图片描述

企业微信创建

首先在自己手机下载企业微信,为了进行测试,自己先创建一个企业。登录企业微信平台:企业微信
在应用管理创建一个应用。同时记住这里的id和secret,保存下来。

在这里插入图片描述
在我的企业可以企业的id,同样需要。
在这里插入图片描述
下面就可以编写程序,python调用企业微信接口实现群发信息:接口文档



import requests, sys


class SendWeiXinWork():
    def __init__(self):
        self.CORP_ID = "ww"  # 企业号的标识
        self.SECRET = ""  # 管理组凭证密钥
        self.AGENT_ID = '1000002'  # 应用ID
        self.token = self.get_token()

    def get_token(self):
        url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
        data = {
            "corpid": self.CORP_ID,
            "corpsecret": self.SECRET
        }
        req = requests.get(url=url, params=data)
        res = req.json()
        if res['errmsg'] == 'ok':
            return res["access_token"]
        else:
            return res

    def send_message(self, to_user, content):
        url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % self.token
        data = {
            #"touser": to_user,  # 发送个人就填用户账号
            "toparty": 1,  # 发送组内成员就填部门ID
            "msgtype": "text",
            "agentid": self.AGENT_ID,
            "text": {"content": content},
            "safe": "0"
        }

        req = requests.post(url=url, json=data)
        res = req.json()
        if res['errmsg'] == 'ok':
            print("send message succeed")
            return "send message succeed"
        else:
            print("send message error", res)
            return res


if __name__ == '__main__':
    SendWeiXinWork = SendWeiXinWork()
    SendWeiXinWork.send_message("2", "test for wechat")

可能会出现某些错误:如果显示代理问题,请关闭代理软件;如果ip是问题,请将自己的ip设置为白名单:选择自己创建的应用。注意不要看自己的ipconfig,因为这是内网ip,使用了NAT转换了,所以你可以先跑一下程序,他会报错会告诉你的ip内容。

在这里插入图片描述

群发消息

views.py

def send_sql(request):
    cursor = connection.cursor()
    cursor.execute("select a.name from TestDjan_test_excel_info a inner  join  TestDjan_oldinfo b on a.name=b.name and a.pcnum !=b.pcnum")
    myre=cursor.fetchall()
    for i in myre:
        name = i[0]
        SendWeiXinWork = testwechat.SendWeiXinWork()
        SendWeiXinWork.send_message("2","有错误的信息:"+name)
    return  redirect('/info/')

urls.py

	path('info/',views.info_show),
    path('drop_info/',views.drop_info),
    path('compare_sql/',views.compare_sql),
    path('send_sql',views.send_sql),

为了方便我直接使用了跳转网页的形式来进行查询对比数据与发送,当然了在对比那块可以实现视图的展示。
这是用户收到的信息:
这是我的数据库测试表内容:
在这里插入图片描述
需要对比的表
在这里插入图片描述
关键的sql语句:

select a.name from TestDjan_test_excel_info a inner  join  TestDjan_oldinfo b on a.name=b.name and a.pcnum !=b.pcnum

然后部门的人便可以接到以下的内容了:

请添加图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django架构下验证企业微信用户信息,可以按照以下步骤进行: 1. 在企业微信中创建一个应用,并获取应用的AgentId、CorpId、Secret等信息。 2. 在Django中创建一个接口,用于接收企业微信服务器发送过来的请求。可以使用Django的csrf_exempt装饰器来关闭跨站请求伪造保护。 3. 在Django中对请求进行验证,验证方式包括校验请求的URL是否来自企业微信服务器、校验请求的消息体是否来自企业微信服务器、校验请求的时间戳是否过期等。 4. 在Django中向企业微信服务器发送请求,获取access_token和jsapi_ticket等信息,并将这些信息缓存起来,以便后续使用。 5. 在Django中对用户的身份进行验证,验证方式包括根据用户授权的code获取用户的UserId、根据UserId向企业微信服务器发送请求获取用户的详细信息等。 6. 在Django中生成一个自定义的token,并将token、UserId等信息保存到数据库中。 7. 在前端通过wx.setStorageSync()方法将token保存在本地缓存中。 8. 在后续的请求中,前端通过wx.getStorageSync()方法获取token,并将token通过HTTP请求的Header中发送到Django服务器。 9. 在Django中对每个请求进行token校验,如果校验通过,则维护用户的登录态。 需要注意的是,企业微信的验证过程中需要使用到加密和解密算法,例如AES算法和SHA1算法等。为了保障用户信息的安全,需要对传输的数据进行加密和解密处理。同时,为了防止token被伪造,需要在生成token时加入一些随机因素,例如时间戳和随机字符串等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值