- 巴拉記帳本的後端源碼
- 巴拉記帳本的前端源碼
- 巴拉記帳本的前台畫面
- 因為是用 Replit 架的,所以太久沒人連線前端或後端 API 可能會睡著
-.-,之後完成後這個 side project 後再考慮弄個程式定期叫醒
- 因為是用 Replit 架的,所以太久沒人連線前端或後端 API 可能會睡著
# 20230806 Day01
其實之前就在寫了,但因為各種事情
還有分心暫時停擺了,最近閒賦在家當然要趕快重新開始!!那就以重新開始這天稱為第一天吧!
# 前端進度
- 減少第一版要寫的功能以增加完成的機率 =_=
- 找到一個合作小夥伴(應該)
# 後端進度
- 開始寫 View,暫時維持使用 ResTool 完美主義延續下去根本第一版都出不來
~_~ - 遇到的問題
- no such table... 記得異動資料庫後要下後續的兩條指令 =_=
- 日期可以傳入 20230806 欸 0.0...
- ⭐ResTool 傳入值跟適用情境不夠,之後要改
- 關於 DRF 的後台
- Models 沒有顯示是因為沒有註冊 -> 註冊自動化
- 統整下來在 app 下方的
admin.py加入以下:
from django.contrib import admin
from django.apps import apps
models = apps.get_models()
for model in models:
try:
admin.site.register(model)
except admin.sites.AlreadyRegistered: # 跳過重複註冊的
pass - 欄位的最小長度要用什麼敘述? A:預設沒有這個敘述,要自己擴寫
- ⭐Django 不小心新增一個空字串作為 PK 我無法使用管理後台刪除該筆資料
- 朋友解釋是因為 Python 的 Dict 不能以空字串作為 key,所以對 Python 來說沒有這個東西,自然也就刪除不到
- 猜測用 delete 方法的接口效果也一樣(中間也過序列化器,應該也涉及 Python 資料結構),討論完的結論就是... 大大用 Chrome 打開 SQLite 刪吧囧
- 請做好空字串防止!!
- 朋友解釋是因為 Python 的 Dict 不能以空字串作為 key,所以對 Python 來說沒有這個東西,自然也就刪除不到
- 序列化器出來的東西跟我想的不一樣
DRF 初學者寫 Join 要命 rrr-> 明天來做點釐清...
# 20230807 Day02
# 前端進度
- 暫無
- 組件趕快整理出來才能讓小夥伴幫忙 r >_<
# 後端進度
- 研究 DRF 序列化器
- 代碼整理
- 重新設計 ResTool
注意:原生 Python 沒有多載,方法簽章相同時,後面 method 覆蓋前面 method
from django.http import JsonResponse
class ResponseTool():
def success_json_res(data):
response_data = {
"code": "SUCCESS",
"message": "成功",
"data": data
}return JsonResponse(response_data, safe=False)
def exception_json_res(Exception):
response_data = {
"code": "SOME_EXCEPTION",
"message": str(Exception),
"data": {}
}return JsonResponse(response_data, safe=False)
- 補充:save 參數的意義
- 重新設計 ResTool
# 20230808 Day03
# 前端進度
- 無
- 確認 Axios 可以用 put method
# 後端進度
- 研習 QuerySet,還借了書。
# 20230809 Day04
# 前端進度
- 無
# 後端進度
- 研習 kwargs、網址傳參
# 20230810 Day05
# 前端進度
- 無
# 後端進度
- API 撰寫
- 稍微改良一下 views.py 主要的寫法
今天遇到的問題,主要發生在查全部記帳不傳入參數:(貌似是昨天就寫出來的問題,但沒測到就收工了)
- TypeError: 缺少必要參數
...missing 1 required positional argument: 'id'
似乎是類似這樣的問題,後來改寫法後是沒遇到了
2. 查不到東西??
myapp.models.Account.DoesNotExist: Account matching query does not exist.
我想了一下它似乎進到 if 裡了,但又是空的,所以查不到東西
後來我印一印得知不傳參數,那個參數會是 None ,寫法用是否為空字串判斷當然是❌❌
改成這樣就修好囉
if kwargs.get('id') != None: |
# 20230811 Day06
裸辭... 很可怕欸,變成自然醒又懶洋洋的,跟我本來的期望有點落差 = = 不過就當休息也不錯?只是之前指望自己可以做到很多,其實實際上能做到的很少 T_T
# 前端進度
- 無
# 後端進度
- API 代碼規劃與撰寫
- 修改記帳:
def put(self, request,*args, **kwargs) - 刪除記帳:
def delete(self, request,*args, **kwargs) - 修改分類:基於關聯安全考量加上暫時沒配套措施,我只讓它修改中文 desc
- 刪除分類:暫無,因為有關聯,給使用者單純刪可危險了,需要研擬配套措施
- 額... 之後查詢類的 API 怎麼取名才顯得 RESTful,去取材吧...
- 修改記帳:
- 已知使用 Python 的 TODO
# 20230812 Day07
# 20230813 Day08
# 前端進度
- 無
# 後端進度
- RESTful API 命名考究,閱讀文章 1 2 3
# 20230814 Day09
# 前端進度
- 無
# 後端進度
- 圖表接口安排與 urlpatterns 研究
# 20230815 Day10
# 前端進度
- 無
# 後端進度
- Queryset 與運算
- 遍歷與效能
- 使用串列快速做數學運算吧
- dict 存放資料
- 要做針對帳目的計算時才發現之前根本沒有記錄金錢的欄位(狂汗),給它補上
- 如果 sqlite 已經存在多筆資料,在 model 沒給預設值的狀況,執行
python manage.py makemigrations,它會問你要 (1) 現在給那些既有資料一個值;還是 (2) 在 model 定義預設值 - 這個欄位需要做資料防護,必須 >=0,因為原先設計 views.py 程式中是用 io 欄位的 INPUT/OUTPUT 去決定最終正負號
- 如果 sqlite 已經存在多筆資料,在 model 沒給預設值的狀況,執行
- 神秘錯誤一則
# 20230816 Day11
# 前端進度
- 稍微想像了下串接..
- 在本機 clone 了專案
# 後端進度
- 完成最後一支 API
- 單引雙引的差別複習
- 閱讀 1
下次作業日才為 Day12
