Django+WeRobot自動返信を実現

5976 ワード

Django+WeRobot自動返信を実現
周知のように、私は微信の公衆番号を作って、それから1つの機能を提供して、あなたがキーワードを書いて、私はあなたにこのキーワードが正しい内容に返事して、だから今日この機能がどのように実現したのかを話します.
一、Djangoのインストールと構成
Djangoのインストール
もし私たちがPythonをインストールしたとしたら、バージョンは、あまり重要ではありません.私は今回3.8.6というバージョンを使っています.サーバーでは3.6.9バージョンを使っています.Djangoですか.最新版です.今回は主にDjangoの公式ドキュメントを参考にしています.
#   Django
pip install django

Djangoプロジェクトの作成
#   Django  
django-admin startproject mysite
#        ,      
mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
#   app, app  app,             
# startapp      app  ,            , werobot  
#   ,     wrob,      ,   app            
python manage.py startapp wrob
#   ,      
wrob/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

二、werobotのインストール
WeRoBotは、MITプロトコルを採用して発表された微信公衆番号の開発フレームワークです.
オープンソースアドレス:https://github.com/offu/WeRoBotドキュメントアドレス:https://werobot.readthedocs.io/zh_CN/latest/
  werobot
pip install werobot

三、コードを変更する
やっと、コードの変更が始まりました
1.viewsを修正する.py
このファイルは、簡単に言えばすべての機能がここに置かれているので、werobotドキュメントの他のWebフレームワークとの統合によると、viewファイルを変更します.
#          
#          ,            ,  
from django.db.models import Model
# Create your views here.
#   werobot  
from werobot import WeRoBot
#        ,      
from .models import share

#                 ,              
COMPONENT_APP_ID = 'XXXXXXXXXXXXXXX'
COMPONENT_APP_SECRET = 'XXXXXXXXXXXXXXXXXXXXXX'
COMPONENT_APP_TOKEN = 'XXXXXXXXXXXX'
COMPONENT_ENCODINGAESKEY = 'XXXXXXXXXXXXXXXXXXX'

#   werobot   ,    MyRobot
MyRobot = WeRoBot(token=COMPONENT_APP_TOKEN)
MyRobot.config["APP_ID"] = COMPONENT_APP_ID
MyRobot.config["APP_SECRET"] = COMPONENT_APP_SECRET

#      ,            ,          
@MyRobot.text
def echo(message):
    #       ,         openid,        
    content = message.content
    #         1   ,  20   ,     ,   ,       
    if 20 > len(content) >= 1:
        #        ,         
        content = content.lower()
        #                 
        res = share.objects.filter(key=content).values()
        #                ,             
        slist = []
        for data in res:
            temp = [
                data["desc"],
                data["link"],
                data["secret"]
            ]
            slist.extend(temp)
        string = "
".join(slist) # return string # , , , @MyRobot.subscribe def welcome(message): return ''' , , ''' # , 。。。 # , , , , @MyRobot.unsubscribe def goodbye(message): return 'nothing'

2.modelを修正する.pyファイル、データベースの作成
djangoは、オブジェクト向けの方法でデータベース、すなわちORMを処理できるデータベース処理フレームワークを提供しています.したがって、クラスでデータベースを記述するだけでいいのです.
from django.db import models

# Create your models here.

#    
#                  
#      app _      
class share(models.Model):

    #      4   ,      、  、  、       
    key = models.CharField(max_length=50)
    desc = models.CharField(max_length=200)
    link = models.CharField(max_length=100)
    secret = models.CharField(max_length=100)

    #    ,         
    #    print       ,       __str__(self)  ,             return   
    #                
    def __str__(self):
        return self.desc

データベースの作成
djangoフレームワーク、デフォルトではsqliteデータベースが使用され、データベース名と場所はmysiteのsettingsファイルで変更できます.私は「werobot.db」に変更しました.道理で言えば、私たちはただ1つのクラスを作成しただけで、本当のデータベーステーブルを作成することはできません.一連の操作をしてこそ、本当にデータベースを作成することができます.ここで、ついでに管理者アカウントを作成します.djangoは管理者を持っています.あさって、データベースのデータを管理することができます.やはり力があります.まずsettingsファイルを変更する必要があります
#   mysite/settings.py
#  INSTALLED_APPS   'wrob.apps.WrobConfig',
#   'wrob.apps.WrobConfig',    ,wrob 
INSTALLED_APPS = [
    'wrob.apps.WrobConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

いくつかのコマンドを実行
#       , django              
#      , wrob/migrations/             0001_initial.py
python manage.py makemigrations wrob
#   wrob  app 0001_initial  ,    sql  
#             
python manage.py sqlmigrate wrob 0001
#      ,          ,             
python manage.py migrate

管理者ユーザーの作成
#      ,    ,        ,     
python manage.py createsuperuser

3.adminを修正する.pyファイル
このファイルの修正は比较的に简単で、1行で、上记が终わった后に管理者のインタフェースでまだ私达が追加したそのデータベースの情报を表示することができなくて、私达はこのファイルの中で1つの登录を行う必要があって、この表を管理者のインタフェースに登录して、表示することができます.
from django.contrib import admin
# Register your models here.
from .models import share
admin.site.register(share)

4.urlsを修正する.py
このファイルはurlの解析タスクを管理しています.つまり、urlごとにどのように異なるviewに対応しているのか、それに頼っています.道理から言えば、appごとにurlsがあるはずです.pyファイル、そして全体のurls.pyファイルでincludeを参照すればいいのですが、ここでは、ルーティング関係が1つなので、そんなに複雑にしないで、mysite/urlsを直接修正します.py
from django.contrib import admin
from django.urls import path

#   werobot  make_view    
from werobot.contrib.django import make_view
#        app  view      MyRobot
from wrob.views import MyRobot

urlpatterns = [
    path('admin/', admin.site.urls),
    # robot:url         url,   MyRobot    ,  url             
    #                      
    path('robot/', make_view(MyRobot))
]

四、最終効果