iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
3
影片教學

用Django架構建置專屬的LINEBOT吧系列 第 2

[Day 2]用Django架構建置專屬的LINEBOT吧 - 開始第一個Django專案

  • 分享至 

  • twitterImage
  •  

為什麼選擇Django

對於程式語言初學者而言,Python是很好理解跟上手的

如果對於Python已經有一定程度入門基礎(還沒有基礎的初學者可以看序章)
那麼透過Django的實作應用,可以更了解關於伺服器運作、網站框架及資料庫系統管理

因為Django是一個基於"功能完備"原則下所設計的網站框架
而LINE BOT本身其實就是一個以LINE的API跟使用者互動的網頁呀:D
所以許多內建功能將會讓開發者在使用過程中能夠更容易地進行調整

安裝Django及line-bot-sdk

好,廢話不多說~
首先當然是由開發環境建立開始囉
第一步是安裝Django跟Line-bot-sdk

$ pip install Django
$ pip install line-bot-sdk
$ pip install virtualenv

Yes

開啟第一個Django專案

安裝完畢之後,開始第一個Django專案
首先在C:/路徑下建立第一個專案

$ cd C:/
$ django-admin startproject '專案名稱'
$ cd '專案名稱'

根據自己的專案名稱,會在C:/下建立專案資料夾
進入專案資料夾後可以看到的是Django專案內建的檔案跟資料夾

#補檔案跟資料夾

這些資料夾內可以看到包含manage.py檔案、db.sqlite3以及'專案名稱'資料夾
manage.py是主控Django專案的程式檔案,而'專案名稱'資料夾內的檔案
則是與專案之伺服器運作、網站架構及資料庫設定等相關的檔案

Yes

建立虛擬環境

首先在Django專案內,建議先建立虛擬環境

#建立虛擬環境方式
$ virtualenv '虛擬環境名稱'

#啟動虛擬環境方式(在Windows系統下)
$ .\'虛擬環境名稱'\Scripts\activate

輸入完畢之後,前面有(虛擬環境名稱),就代表虛擬環境啟動成功
這個時候進行套件安裝更改就不會影響本機原來的開發環境

Yes

建立Django APP

OK,可以正式進入主題了
在這個專案底下,可以同時進行多個LINE BOT的開發,
每個LINE BOT都有一個獨立的APP資料夾,
在同一個專案底下會使用共用的專案設定,
APP的建立方式是

python manage.py startapp 'APP名稱'

在建立APP資料夾後,可以看到裡面有幾個內建的python檔案,
在接下來的文章當中都會介紹到如何運用,敬請期待囉

在進行LINE BOT設計之前,還有一些基礎的設定需要先完成,
這個是使用Django開發跟flask比較起來比較麻煩的地方,
但是如果是想要做一個完整架構的,對初學者而言這倒是佛心的設計呀。

首先我們需要新增兩個資料夾,
static主要用於靜態資料如圖片、圖示、其他媒體檔案等等
templates則是用於放模版,也就是寫好的html的網頁

md templates
md static

Yes

更改settings.py

建立好兩個資料夾之後,
接著進入到'專案名稱'的資料夾當中
開啟settings.py檔案,這個檔案裡面會做主要的伺服器設定,
請依照下列步驟完成基礎的設定

首先把LINE的Channel Access Token跟Channel Secret新增到Secret_Key之前

# SECURITY WARNING: keep the secret key used in production secret!
LINE_CHANNEL_ACCESS_TOKEN = '你的LINE Channel Access Token'
LINE_CHANNEL_SECRET = '你的LINE Channel Secret'
SECRET_KEY = 'Django專案的Secret Key'#此處不需更改

然後,在INSTALLED_APPS內新增剛剛建立的APP名稱

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'APP名稱'#新增APP名稱
]

其次,在TEMPLATES中新增,templates的資料夾路徑

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],#新增templates資料夾路徑
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

接著進行語系、時區的設定

LANGUAGE_CODE = 'zh-hant'

TIME_ZONE = 'Asia/Taipei'

最後是新增static路徑

STATIC_URL = '/static/'
STATICILES_DIRS = [
    os.path.join(BASE_DIR,'static')#加入static路徑
]

到這邊設定就大致上完成了,
但另外仍需注意的部分是,
DEBUG的部分設定是開發階段方便時設定為True,
若此處設定為False,則網頁出現Bug的時候,
會呈現HTTP 404的Status Code,
這裡就先不用管他囉

DEBUG = True

另外在開發階段Allowed_Host也先設定為*即可

ALLOWED_HOSTS = ['*']

若是有固定的Host或後續使用ngrok等進行demo測試時,
再做更改就可以了,

更改urls.py

接下來,需要設定的是url.py檔案,

在url.py檔案中,
設定的是當外部連接進入網站時,
斜線後面的路徑所引導的程序,
預設的是當進入127.0.0.1:8000/admin的時候
會進入Django內建後台的設定,

from Django.contrib import admin
from Django.urls import path

urlpatterns = [
    path('admin/',admin.site.urls),
]

Yes

資料庫遷移初始化及建立管理者帳號

完成以上設定後,
嘗試進行資料庫遷移的初始化,

python manage.py makemigrations
python manage.py migrate

完成資料庫遷移的初始化測試之後,
首先為自己進入資料庫後台建立一個管理者帳號

python manage.py createsuperuser

Yes

執行runserver進行測試

在此設定帳號密碼之後,
為了確保全部的設定沒問題,
現在要啟動Django網站進行測試,
方法是輸入以下指令

python manage.py runserver

開啟Django網站後,開啟瀏覽器進入127.0.0.1:8000/admin
如果看到以下畫面就沒問題囉~

https://ithelp.ithome.com.tw/upload/images/20200917/2012117626AoMCqJoK.jpg

接著可以用剛剛建立的superuser帳號密碼登入後台,
會看到以下畫面:

https://ithelp.ithome.com.tw/upload/images/20200917/20121176Enrn2Ovv7j.jpg

以上是對於Django專案的設定方式
接下來就主要將針對LINE BOT開發的部分進行介紹囉~

Yes


上一篇
[Day 1]用Django架構建置專屬的LINEBOT吧-序言
下一篇
[Day 3]用Django架構建置專屬的LINEBOT吧 - 開始第一個LINE BOT APP
系列文
用Django架構建置專屬的LINEBOT吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
newell
iT邦新手 3 級 ‧ 2023-02-20 14:58:34

謝謝分享
新增 static 路徑裡少了個 F
STATICFILES_DIRS

我要留言

立即登入留言