「Django Unleashed筆記/第一章」修訂間的差異

出自Tan Kian-ting的維基
跳至導覽 跳至搜尋
(建立內容為「;第一章:starting a new Django project * server、website、webpage、HTTP request、HTTP response、URL * scheme://network_location/path?query#fragments *…」的新頁面)
 
行 1: 行 1:
{{Nav|程式語言、邏輯學|Django Unleashed筆記}}
;第一章:starting a new Django project
;第一章:starting a new Django project



於 2022年9月21日 (三) 23:36 的修訂

第一章:starting a new Django project
  • server、website、webpage、HTTP request、HTTP response、URL
  • scheme://network_location/path?query#fragments
  • 靜態網頁是無狀態的(stateless),但是現在網站很多動態的,而分爲前端和後端。
  • HTTP request->伺服器計算->HTTP response
  • 現在多以框架爲主。
  • framework vs library
  • "Don't fight the framework"
  • MVC 模型
    • Model:控制資料的組織和儲存,可能也定義資料特定 (data-specific) 的行爲(models.py)
    • View:控制資料如何顯示以及生成給用者看的資訊(html template)
    • Controller:Model 和 View 的中介者:顯示用者想要的,並回傳資料。(view.py、urls.py)
  • Part 1 要建構的頁面:
    • 標籤列表頁
    • 新創列表頁
    • 文章列表頁
    • 增加頁面、書籤的頁面
    • 單一標籤、新創、文章的列表頁。
  • 建立專案:django-admin startproject [myblog](或是其他專案名)

產出結果:

...
└── myblog
    ├── manage.py
    └── myblog
        ├── asgi.py
        ├── __init__.py # 讓 myblog 變成一個 Python 套件。
        ├── settings.py #設定檔
        ├── urls.py # valid url
        └── wsgi.py # Web Server Gateway Interface,包含開發用伺服器
  • ./manage.py migrate建立資料庫。
  • ./manage.py runserver啓動測試伺服器。
    • ./manage.py runserver 7777設定埠號。
    • sudo ./manage.py runserver 0.0.0.0:80設定以port 80對外開放(危險)。
  • 一個專案有一個以上的 feature(app),feature 可以視爲一個 package。
    • 建立app: ./manage.py startapp organizer
    • 結果如下:
├── myblog
│   ├── asgi.py
...
└── organizer # app 名稱
    ├── admin.py # 連結 app 到 Django Admin 函式庫,要設定,先讀完Ch 5 再跳到 Ch 23
    ├── apps.py
    ├── __init__.py
    ├── migrations # 使 Django 追蹤專案改變導致的資料庫結構改變
    │   └── __init__.py
    ├── models.py # model
    ├── tests.py # 單元測試
    └── views.py # 處理資料和選取顯示的資料
  • 爲了要讓專案知道有這個app,去myblog/setting.py加入app的名字:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'organizer', # custom app
]