在完成第一個由Django架構製作的LINE BOT之後,
當然就是要開始介紹如何以Django的model來建立LINE BOT資料庫囉,
在Django的官方說明文檔中,
也有關於資料庫、表的建立範例,
我們可以從LINE BOT如何記錄用戶資訊以及聊天訊息開始,
首先在LINE BOT APP資料夾中,開啟models.py檔案,
在當中輸入以下範例:
from django.db import models
# Create your models here.
class User_Info(models.Model):
uid = models.CharField(max_length=50,null=False,default='') #user_id
name = models.CharField(max_length=255,blank=True,null=False) #LINE名字
pic_url = models.CharField(max_length=255,null=False) #大頭貼網址
mtext = models.CharField(max_length=255,blank=True,null=False) #文字訊息紀錄
mdt = models.DateTimeField(auto_now=True) #物件儲存的日期時間
def __str__(self):
return self.uid
接著在同一層資料夾開啟admin.py,
這個檔案是用來設定在Django後台要顯示的資料,
要先從models.py檔案中引入model資料表,
from django.contrib import admin
# Register your models here.
from IT_help.models import *
class User_Info_Admin(admin.ModelAdmin):
list_display = ('uid','name','pic_url','mtext','mdt')
admin.site.register(User_Info,User_Info_Admin)
完成相關設定之後,
需要輸入以下指令更新資料庫,
$ python manage.py makemigrations
$ python manage.py migrate
如果看到以下畫面,
就代表到這邊資料表設定就完成了,
接著,
即可在LINEBOT中使用這個資料表規則,
以進行資料寫入、讀取、修改、刪除,
延續上一篇的回聲機器人,
開啟views.py之後,
加入將用資訊、文字訊息存入資料庫的
在程式碼當中的使用方法如下:
首先將資料表import至views.py
#models.py資料表
from IT_help.models import *
主程式部分:
if isinstance(event, MessageEvent):
mtext=event.message.text
uid=event.source.user_id
profile=line_bot_api.get_profile(uid)
name=profile.display_name
pic_url=profile.picture_url
message=[]
if User_Info.objects.filter(uid=uid).exists()==False:
User_Info.objects.create(uid=uid,name=name,pic_url=pic_url,mtext=mtext)
message.append(TextSendMessage(text='會員資料新增完畢'))
elif User_Info.objects.filter(uid=uid).exists()==True:
message.append(TextSendMessage(text='已經有建立會員資料囉'))
user_info = User_Info.objects.filter(uid=uid)
for user in user_info:
info = 'UID=%s\nNAME=%s\n大頭貼=%s'%(user.uid,user.name,user.pic_url)
message.append(TextSendMessage(text=info))
line_bot_api.reply_message(event.reply_token,message)
來進行測試囉~
有正常回傳訊息,就代表程式順利執行,
從回傳的資訊可以看到資料庫當中調用的資料長什麼樣子,
這樣就可以完成透過Django的models.py寫入、讀取資料表內容了,
基本的操作都是以objects來調用的,例如:
寫入資料(將data資料寫入到data欄位)
Table_name.objects.create(data=data)
讀取資料(搜尋資料表中data欄位為data值的資料集)
#以filter讀取資料庫則將回傳list格式資料列表
Table_name.objects.filter(data=data)
#以get讀取資料庫會獲得單筆資料物件
Table_name.objects.get(data=data)
修改資料(調出data欄位為data值的資料,並將其data值改寫為new_data)
Table_name.objects.filter(data=data).update(data=new_data)
刪除資料(刪除data欄位為data值的資料,或全部資料)
Table_name.objects.filter(data=data).delete()
Table_name.objects.all().delete()
以上是Django資料庫的基本操作方式,
透過資料庫的建立,
LINEBOT就不再只能針對單一次訊息進行回應了,
對於初學者而言,也可以應用Django既有的設定,
從基礎的操作當中去進階到更多變化的設計,
下一篇講會講到關於Django後台的admin登入頁面操作