網址附贈:
https://www.codementor.io/sagaragarwal94/building-a-basic-restful-api-in-python-58k02xsiq
https://stackoverflow.com/questions/40586744/django-rest-authentication-from-desktop-app
http://www.sqlitetutorial.net/sqlite-sample-database/
本來是利用上面三個網址來在本地端練習
但不知道為什麼找不到本地端,全卡
加上跟小學弟發牢騷,他又說都給你機器了,阿 REST API 就是你在雲端上寫一個 django 接收
然後終端那邊看設在哪都好
以往我卡的點(也有可能是大家卡的點)
這樣的話,我應該要再開發程式裡寫好當我按下「送出」鍵的時候,我同時要上傳資料回資料庫
也就是說,我應該要在程式裡寫好指令/動作是蒐集輸入的資訊,然後指定要回傳哪個雲端的資料庫
OK, 到這邏輯都還通的
可是當我將雲端的 mysql/phpmyadmin 全部架好後
我發現會有權限的問題
於是我卡的點在於
然後送出後他會回傳到我的雲端資料庫
可是當他回傳的時候,得先接我的資料庫
這步驟立馬被擋下來,應該他沒有被我的資料庫授權可進入/可傳送
也就是說,我應該要讓他有權限回傳資料
可是,我要給一堆人輸入我的表單再回傳,我總不可能讓每個人的 ip 都能進我的資料庫
這樣所有人都能進我的資料庫,變成所有人都能對我的資料庫做更改/刪除
在這個問題約莫卡了快一週(斷斷續續一週)
我就快抓狂,然後再度向小學弟發牢騷
之後小學弟跟我說 REST API
這項技術之前我們老師就常常再提(但因為覺得跟我無關,所以我就耳朵蓋起來)
然後看了一下什麼 3 tier,非常的麻煩,姑且擺在一邊
我可以直接用 pymsql 寫 連 db,我幹嘛還需要寫這個 3tier XD
但後來,問了指導老師後
才發現自己的做法被上一個開發這個程式的學弟誤導
意思是說上個學弟應該也是沒有問人,自己開發,自己找
然後用了最笨的方法+上他覺得不用負責的態度,所以硬是寫了很不方便但免強還能使用程式的方法
最不人性化+沒有達到 100%功能
但因為我自己也是懶惰沒有去研究跟詢問,硬是覺得我應該看懂人家的 code,然後自己改一版就好
於是陷入了整個死胡同
但現在好的是,找到方法+上因為這樣有凹到一台虛擬機 XD
所以,找到方法後,就可以進行開發了
至於卡死跟鬼打牆的點
其實就是利用 django 跟 python 的套件在網路上建立可以做接收/修改/刪除的行為(requests)
然後在雲端上寫好一個可作為接收端,至於發出端/終端,在哪邊/哪個裝置寫都可以
利用 GET/POST 或者上傳檔案的方式,將本來要收集跟上傳的資料藉由 djagno 往雲端送
至於寫這篇,其實也是想提醒自己
拿到了一個機器,裝好了所有環境卻完全忘了怎麼 run 機器 XD
只好把這篇叫出來
然後用 linux 語法
這是自己測試的時候使用的指令,跑一次,有錯就終止,然後更改後再跑
這個不會讓網頁掛著好好的,但是做測試用
阿剛剛在 run 的時候我沒有輸入 0.0.0.0:80
所以不管是輸入 127.0.0.1(localhost)還是輸入我的 ip 都沒反應
做測試的時候可以將 port 號改成別的,當然如果你 port 號改掉
假設你輸入這樣
sudo python manage.py runserver 0.0.0.0:9912
那麼在 url 就要輸入
然後到你的網頁
類似這樣
9912 是我喜歡一個怪咖數字,因為小學弟都用 8000
至於後面/test/去哪邊看
請到你的資料夾裡的 url.py 裡面看
url.py 是定義 url 跟 requests(傳到 view 處理)的地方
有寫動作(requests),有需要串 url 就要去 url.py 裡面寫
有需要使用到 url 跟串動作(requests),都要在 url.py 寫(在鬼打牆什麼)
寫完動作後,記得去 view.py 裡定義動作唷!
另外一個是,不理會任何錯誤讓網頁一直掛著
一樣(我不知道&要不要加)XD
一定要 sudo(用權限開)
接著如果跑很多次,或者重新跑都遇到 port 被佔
就用這個查詢所有的連線
然後使用
殺掉想連的 port 號或者連線
pid 就是終端機會秀出那個連線的 id,輸入那個 id 就會殺掉那個連線喲!
最後,筆記一下
如果使用內建 django 的 admin 後台
要創立 superuser,不然無法進入
使用指令,可以創立 superuser
接著在網址後面打上
/admin
像是這樣
ip:port/admin
就可以進入後台畫面(請確定有沒有將後台都 import,像是 view, setting...之類的)
打入剛剛在終端機輸入的帳號密碼,就能進入後台了~