環境/套件說明
由於之後專案的需要 因此找了DRF來做為我們的後端server
這次要做的是先簡單寫一個get的method,取出資料庫中的資訊並回傳
一樣把我的操作步驟一一列出
- 安裝python虛擬環境隔開目前的環境
python3 -m venv myenv
- 進到虛擬環境後安裝django/djangorestframework
django冷知識:django的發音是「間狗」,d不發音
https://docs.djangoproject.com/en/dev/faq/general/#what-does-django-mean-and-how-do-you-pronounce-it
3. 安裝完以上東西後,就可以在安裝虛擬目錄的同一層下
django-admin.py startproject xyz
意思是說開一個新的專案叫做xyz
4. 開完專案後再開一個hello的app,一個專案裡面可以有很多app
(這個指令要進去xyz那個folder裡面才下,不然就是下的時候要調整中間那個manage.py的路徑)
python manage.py startapp hello
下完後就會看到xyz裡面多一個hello的folder
5. 接著微調一下設定檔 xyz/settings.py
把 rest_framework
跟 hello
宣告上去
6. 然後把server起起來,大功告成
接下來就會直接說get囉~~~(好瑣碎的紀錄呀)
GET參數取法
api的寫法中get傳參數的方式,一般有兩種
一種是用問號加在後面的 localhost:8000/hello?data1=1
這種
另外一種是直接接在後面當路徑的 localhost:8000/hello/1
- 先來看看urls.py的設定
分兩個檔案是因為我把/hello下面的都讓他進到hello.urls去處理
➡也就是說遇到 http://localhost/hello.....
這種長相的,都會在 hello/urls.py
裡面做設定
django.urls
這種寫法是django2.0的寫法,舊的是 django.conf.urls
所以網路上如果有看到 url(xxx,xxx)
的就都是1.0的寫法,請不要混淆
這篇有些觀念寫的每賣可以參考
https://kinegratii.github.io/2017/09/25/django2-url-path/
path('<int:year>', views())
是在說明我會有個route 是數字格式的,且會把這個變數放進year這變數裡面,範例: http://localhost/hello/321
re_path(r'^',view())
這個是在說 http://localhost/hello
但又沒進到上述的裡面的其他route
- 再來看一下我的view
我是透過 APIView
的做法
如果要用 get
就是定義一個get的function (圖一line18)
這個function的參數除了self
及 request
一定要以外
若在 urls.py
裡面有另外設定變數,則這裡也要另外宣告,如(圖一line18)裡面的 year=None
的部分
(=None
是給預設值的意思,不然會死掉)
有些demo也會多傳 format=None
是宣告回傳的資料格式
(default是json,若要回傳非json的,要另外再找找指令)
- 設定完了,來取值吧
如果是 http://localhost/hello?data1=1
的這種,問號後面的內容會在 request.GET
裡面出現(圖一line24)
如果是 http://localhost/hello/1
的這種,就是直接將 urls.py
裡面設定的 year
這個變數取出來即可(圖一line26)
很簡單吧~
GET寫完後,一起來試試POST/PUT/DELETE,很好玩的~
文件可以參考這裡⬇
https://www.django-rest-framework.org/tutorial/3-class-based-views/
我的實作在這裡 https://github.com/sasapan33/xyz