「Django Unleashed筆記」修訂間的差異

移除 2,648 位元組 、 2022年9月21日 (三) 23:33
頁面內容被替換為「{{Nav|程式語言、邏輯學}} {{Book|Andrew Pinkham|9780321985071}} 這是一本 Django 的教學書籍。另見:Django筆記。 * Django Unleashed筆…」
(頁面內容被替換為「{{Nav|程式語言、邏輯學}} {{Book|Andrew Pinkham|9780321985071}} 這是一本 Django 的教學書籍。另見:Django筆記。 * Django Unleashed筆…」)
標籤替換
行 4: 行 4:
這是一本 Django 的教學書籍。另見:[[Django筆記]]。
這是一本 Django 的教學書籍。另見:[[Django筆記]]。


==Part1==
* [[Django Unleashed筆記/第一章]]
主要是寫一個新創(startup)爲主題的部落格。
 
===第一章: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 要建構的頁面:
** 標籤列表頁
** 新創列表頁
** 文章列表頁
** 增加頁面、書籤的頁面
** 單一標籤、新創、文章的列表頁。
 
* 建立專案:<code>django-admin startproject [myblog](或是其他專案名)</code>
產出結果:
<pre>
...
└── myblog
    ├── manage.py
    └── myblog
        ├── asgi.py
        ├── __init__.py # 讓 myblog 變成一個 Python 套件。
        ├── settings.py #設定檔
        ├── urls.py # valid url
        └── wsgi.py # Web Server Gateway Interface,包含開發用伺服器
</pre>
 
* <code>./manage.py migrate</code>建立資料庫。
* <code>./manage.py runserver</code>啓動測試伺服器。
** <code>./manage.py runserver 7777</code>設定埠號。
**<code>sudo ./manage.py runserver 0.0.0.0:80</code>設定以port 80對外開放(危險)。
 
* 一個專案有一個以上的 feature(app),feature 可以視爲一個 package。
** 建立app: <code>./manage.py startapp organizer</code>
** 結果如下:
<pre>
├── 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 # 處理資料和選取顯示的資料
</pre>
 
* 爲了要讓專案知道有這個app,去<code>myblog/setting.py</code>加入app的名字:
<pre>
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'organizer', # custom app
]</pre>
 


[[category:資訊]]
[[category:資訊]]