|
|
行 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:資訊]] |