Blog Cover Image

Inspire you to have New thinking, Walk out your unique Road.

有的時候,你無意間遇到的一些故事,會激發你的靈感,改變你的想法,接下來你會用與之前全然不同的觀念去創造屬於你獨特的故事。

Sign @MinaYu.

[DEVELOP]PYTHON/DJANGO 之REST API開發(1)

Posted on

網址附贈:

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

所以,找到方法後,就可以進行開發了

至於卡死跟鬼打牆的點

REST API

其實就是利用django跟python的套件在網路上建立可以做接收/修改/刪除的行為(requests)

然後在雲端上寫好一個可作為接收端,至於發出端/終端,在哪邊/哪個裝置寫都可以

利用GET/POST或者上傳檔案的方式,將本來要收集跟上傳的資料藉由djagno往雲端送


至於寫這篇,其實也是想提醒自己

拿到了一個機器,裝好了所有環境卻完全忘了怎麼run機器XD

只好把這篇叫出來

DJANGO-新增頁面+重RUN伺服器

然後用linux語法

sudo python manage.py runserver 0.0.0.0:80

這是自己測試的時候使用的指令,跑一次,有錯就終止,然後更改後再跑

這個不會讓網頁掛著好好的,但是做測試用

阿剛剛在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就要輸入

ip:9912

然後到你的網頁

ip:9912/test/

類似這樣

9912是我喜歡一個怪咖數字,因為小學弟都用8000

至於後面/test/去哪邊看

請到你的資料夾裡的url.py裡面看

url.py是定義url跟requests(傳到view處理)的地方

有寫動作(requests),有需要串url就要去url.py裡面寫

有需要使用到url跟串動作(requests),都要在url.py寫(在鬼打牆什麼)

寫完動作後,記得去view.py裡定義動作唷!

另外一個是,不理會任何錯誤讓網頁一直掛著

sudo nohup python manage.py runserver 0.0.0.0:80 &

一樣(我不知道&要不要加)XD

一定要sudo(用權限開)

接著如果跑很多次,或者重新跑都遇到port被佔

就用這個查詢所有的連線

ps -ef | grep runserver

然後使用

sudo kill pid

殺掉想連的port號或者連線

pid就是終端機會秀出那個連線的id,輸入那個id就會殺掉那個連線喲!

最後,筆記一下

如果使用內建django的admin後台

要創立superuser,不然無法進入

使用指令,可以創立superuser

python manage.py createsuperuser

接著在網址後面打上

/admin

像是這樣

ip:port/admin

就可以進入後台畫面(請確定有沒有將後台都import,像是view, setting…之類的)

打入剛剛在終端機輸入的帳號密碼,就能進入後台了~