• 微信推送消息


    我们先那测试环境试一下 和真实环境几乎无差别(微信公众开发平台)

    测试环境: 

    https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 
     
     
    其实很多东西都是固定的  
    和个人发消息:
    import json
    
    import requests
    
    # 其实就好比我们的cookie一样 需要给你关注的用户一个token
    
    # 1. 伪造浏览器向 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential... 发送GET请求,并获取token
    r1 = requests.get(
        url = "https://api.weixin.qq.com/cgi-bin/token",
        params = {
            "grant_type": "client_credential",
            "appid":"wxe022764ef61336e9",     #这个是你的信息
            "secret": "29def1418cdd8c8317fd5ad39a127890"   #也oypXF000rxnm9-5PTTaVM851sXL4是捏信息
        },
    )
    
    
    access_token = r1.json().get('access_token')
    print(access_token)
    
    
    
    
    wx_id = "oypXF000rxnm9-5PTTaVM851sXL4"  # 这个是关注你的微信的别人的id
    
    body = {
        "touser": wx_id,
        "msgtype": "text",
        "text": {
            "content": '老王'  # 这个是你要给别人发送的信息
        }
    }
    r2 = requests.post(
        url="https://api.weixin.qq.com/cgi-bin/message/custom/send",
        params ={
            'access_token': access_token,
    
        },
        data=bytes(json.dumps(body, ensure_ascii=False), encoding='utf-8')
    )
    print(r2.text)

    如果要发模板信息就要先去开发平台增加模板内容

    r1 = requests.get(
        url = "https://api.weixin.qq.com/cgi-bin/token",
        params = {
            "grant_type": "client_credential",
            "appid":"wxe022764ef61336e9",
            "secret":"29def1418cdd8c8317fd5ad39a127890"
        }
    )
    access_token = r1.json().get('access_token')
    
    wx_id = "oypXF000rxnm9-5PTTaVM851sXL4"
    
    body = {
        "touser": wx_id,
        "template_id": 'dD0dm09eqDra4TlbFjXiPlO5fb00Fjz0IL_cyprIkJM',  # 这个是你的在微信开发平台设置的模板id
        "data": {
            "user": {
                "value": "老王",  # 这个是拼接的内容  可以给你的模板中凭借内容
                "color": "#173177"  # 颜色
            }
        }
    }
    
    r2 = requests.post(
        url="https://api.weixin.qq.com/cgi-bin/message/template/send",
        params={
            'access_token': access_token
        },
        data=json.dumps(body)
    )
    
    print(r2.text)

    我们来写一个微信可以推送信息的界面

     views:

    from django.shortcuts import render,redirect,HttpResponse
    
    from django.http import JsonResponse,HttpResponse
    # Create your views here.
    from first import models
    def  login(request):
        '''
        用户登陆界面
        :param request:
        :return:
        '''
        if request.method == "GET":
            return render(request,"login.html")
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        obj = models.UserInfo.objects.filter(name = user,pwd =pwd).first()  # 获取这个用户对象
    
        if obj:
            request.session["user_info"] = {"id":obj.id,"name":obj.name}  # 设置session  可以全局取到
            return redirect("/index/")  # 存在就设置值然后就从新定向到 index界面
    
    
        return render(request,"login.html",{"msg":"用户名或密码错误"})
    
    
    
    
    
    def index(request):
    
    
        current_user_id = request.session["user_info"]["id"]  # 取到全局的 session值
        return render(request,"index.html")
    
    
    
    def get_grcode(request):
        '''
        生成第二个图片的
        :param request:
        :return:
        '''
        ret = {"status":True,"data":None}
        access_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={appid}&redirect_uri={      redirect_uri}&response_type=code&scope=snsapi_userinfo&state={state}#wechat_redirect"     # 把你的信息拼接进去
    
    
        url = access_url.format(
            appid = "wxe022764ef61336e9",
            redirect_uri="",  # 这个是重定向的ip
            state=request.session['user_info']['id']   # 用户id
        )
        ret["data"] = url
    
        return JsonResponse(ret)
    
    
    def get_wx_id(request):
    
        '''
        获取微信id 并且跟新到数据库
        :param request:
        :return:
        '''
        import requests  # 可以模仿http请求
        code = request.GET.get("code")
        state = request.GET.get("state")
    
        #获取用户openID(用户唯一)
        r1 = requests.get(
            url="https://api.weixin.qq.com/sns/oauth2/access_token", # 固定IP
            params = {
                "appid":"wxe022764ef61336e9",  # 你的 测试账号的id
                "secret":"29def1418cdd8c8317fd5ad39a127890",  # 你的测试账账号的信息
                "code": code,
                "grant_type": 'authorization_code',
            }
        ).json()
        # 获取的到openid表示用户授权成功
        wx_id = r1.get("openid")
        user = models.UserInfo.objects.filter(id = state).first()
        if not user.wx_id:
            user.wx_id = wx_id
            user.save()
        return HttpResponse('授权成功')
    
    
    def test(request):
    
        user_list = models.UserInfo.objects.all()
    
        return render(request, 'test.html', {'user_list': user_list})
    
    def send_msg(request):
        """
        发送消息
        :param request:
        :return:
        """
        id = request.session['user_info']['id']
        obj = models.UserInfo.objects.filter(id=id).first()
        import json
        import requests
        # 1. 伪造浏览器向 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential... 发送GET请求,并获取token
        r1 = requests.get(
            url="https://api.weixin.qq.com/cgi-bin/token",
            params={
                "grant_type": "client_credential",
                "appid": 'wxe022764ef61336e9',
                "secret": '29def1418cdd8c8317fd5ad39a127890',
            }
        )
        access_token = r1.json().get('access_token')
    
        body = {
            "touser": obj.wx_id,
            "template_id": '5t4MreDNs1Ns6reAz3U-fbjNRzXQjPpjkC10z-GyngI',  # 你的模板的id
            "data": {
                "user": {
                    "value": "asdfasdfadfasd",
                    "color": "#173177"
                }
            }
        }
        r2 = requests.post(
            url="https://api.weixin.qq.com/cgi-bin/message/template/send",
            params={
                'access_token': access_token
            },
            data=json.dumps(body)
        )
        print(r2.text)
        return HttpResponse('发送成功')
    Views

    models:

    from django.db import models
    
    # Create your models here.
    
    class UserInfo(models.Model):
         name = models.CharField(max_length = 32)
         pwd = models.CharField(max_length=64)
         wx_id = models.CharField(max_length=32,null = True, blank = True)

    前端界面:

    login:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="post">
        {% csrf_token %}
        <input type="text" name="user">
        <input type="text" name="pwd">
        <input type="submit" value="提交">{{ msg }}
    </form>
    
    </body>
    </html>
    login

    index:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    {# #}
    
    <h1>欢迎{{ request.session.user_info.name }}使用大保健2.0</h1> {#从全局中取值 #}
    
    <h3> 扫描关注近期大保健优惠信息(必须关注才能看到近期的姑娘)</h3>
    
    <img  style="200px" src="/static/img/0.jpg" alt="">
    
    <h3>下一步请将您的微信ID发给我</h3>
    <div id = "qrcode" style=" 250px;height: 250px;background-color: white;">
    
    
    </div>
    
    
    <script src="/static/js/jquery.min.js"></script>
    <script src="/static/js/jquery.qrcode.min.js"></script>
    <script src="/static/js/qrcode.js"></script>
    
    <script>
        $(function(){
            get_qcode();
        })
            function get_qcode() {
                $.ajax({
                    url:'/get_qrcode/',
                    type:'GET',
                    dataType:'JSON',
                    success:function (arg) {
                        //arg = {status:True,data:'xxx'}
                        $('#qrcode').empty().qrcode({text: arg.data});
                    }
                })
    
            }
    
    </script>
    </body>
    </html>
    index

    test:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <ul>
            {% for item in user_list %}
            <li>{{ item.name }} {{ item.wx_id }}   <a href="/send_msg/">发送消息</a></li>
            {% endfor %}
        </ul>
    </body>
    </html>
    test

    urls:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^login/', views.login),
        url(r'^get_qrcode/', views.get_qrcode),
        url(r'^get_wx_id/', views.get_wx_id),
        url(r'^test/', views.test),
    ]
    urls
  • 相关阅读:
    Android 一般动画animation和属性动画animator
    Android的SQLite基本操作
    android 支持发送空短信
    android 小音频频繁播放
    大数据测试之hadoop集群配置和测试
    老李分享:接口测试之jmeter
    大数据测试之hadoop命令大全
    老李分享:持续集成学好jenkins之内置命令
    老李分享:持续集成学好jenkins之安装
    老李分享:持续集成学好jenkins之解答疑问
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/9470772.html
Copyright © 2020-2023  润新知