Learning Django
    Step 0

               Cd Chen
   The co-founder of passpass.cc / niceStudio.
陳永昇 (Cd Chen)               A
http://www.cdchen.idv.tw/   b
學歷:國⽴立台中科技⼤大學
                            o
經歷:                         u
 聯成電腦講師                     t
 恆逸資訊講師
現職:
 乃師實業技術總監
 passpass.cc 創辦⼈人
證照:
 RHCE / LPIC / NCLP
 MCSA / MCSE
 OCPJP / OCPJWCD
 TCSE / NSPA
出發之前
我希望您...
• 最好動⼿手玩⼀一玩
• 有問題不要客氣
• ⼿手機請關閉聲⾳音
• ⽤用最舒服⾃自在的⽅方式
• 請包容我的粗⼼心
我假設您已經具備...
• 知道什麼是 HTML
• 最好具備開發 Web 應⽤用程式的經驗
• 有辦法編輯⽂文字檔
• 如果懂 Python 語法更棒
Python 基本觀念
• ⾮非強制型別程式語⾔言
• 強迫格式
• 無 switch 語法
• http://openhome.cc/Gossip/Python/
Django 簡介
關於 Django
• 基於 Python
• 敏捷開發之網站開發框架
• MVC 設計模式
• 最新版本:1.5
• http://djangoproject.com/
簡史
• 最早為 Lawrence, Kansas 新聞網站
• 2005/06 以 BSD License 公開
• 2008/06 成⽴立 Django Software
 Foundation
重要案例
• Pinterest
• Instagram
• Mozilla
• The Washington Times
• Public Broadcasting Service
• passpass.cc
優點
• 內建 ORM
• 簡易的版型語法
• 廣泛的 3rd-Party App
• 內建管理主控台
• 內建基本的安全措施
缺點
• NoSQL??
• 無內建 Connection-Pool
• 版型系統速度較慢
詞彙
• Project / App
• Model / View / Template
建置 Django 環境
準備動作
• 需安裝下列元件:
 • Python 2 / Python 3
 • pip / easy_install
 • virtualenv (⾮非必要,但強烈建議)
安裝 Django
[cdchen@devel django-demo]$ virtualenv djangoenv
New python executable in djangoenv/bin/python2.7
Also creating executable in djangoenv/bin/python
Installing setuptools............done.
Installing pip...............done.
[cdchen@devel django-demo]$ ls djangoenv/
bin include lib lib64
[cdchen@devel django-demo]$ source djangoenv/bin/activate
(djangoenv)[cdchen@devel django-demo]$ cd djangoenv/
(djangoenv)[cdchen@devel djangoenv]$
安裝 Django
(djangoenv)[cdchen@devel djangoenv]$ pip install django
Downloading/unpacking django
  Downloading Django-1.5.1.tar.gz (8.0MB): 8.0MB downloaded
  Running setup.py egg_info for package django

    warning: no previously-included files matching '__pycache__'
found under directory '*'

...

    changing mode of /home/cdchen/django-demo/djangoenv/bin/django-
admin.py to 775
Successfully installed django
Cleaning up...
(djangoenv)[cdchen@devel djangoenv]$
建⽴立 Django 專案
(djangoenv)[cdchen@devel   djangoenv]$ ls
bin include lib lib64
(djangoenv)[cdchen@devel   djangoenv]$ django-admin.py 
> startproject ksdg
(djangoenv)[cdchen@devel   djangoenv]$ ls
bin include ksdg lib       lib64
(djangoenv)[cdchen@devel   djangoenv]$ ls ksdg/
ksdg manage.py
(djangoenv)[cdchen@devel   djangoenv]$ ls ksdg/ksdg/
__init__.py settings.py     urls.py wsgi.py
(djangoenv)[cdchen@devel   djangoenv]$
Django 專案架構
設定 Django 組態
• 檔案:<PROJECT>/settings.py
• 重要參數:
 • DATABASES
 • TIME_ZONE
 • TEMPLATE_DIRS
 • INSTALLED_APPS
定義 URL 組態
• 檔案:<PROJECT>/urls.py
• 定義 URL 與對應的 View
• Ref:
 https://docs.djangoproject.com/en/1.5/
 topics/http/urls/
practice
1.建⽴立⼀一個名為 ksdg 的 Django 專案
2.將資料庫設定為 sqlite3
  •名稱:sqlite3.db
3.加⼊入或啟⽤用下列 App
  • django.contrib.sites
  •django.contrib.flatpages
4.加⼊入下列 URL 對應
     url(‘^pages/’,
        include(‘django.contrib.flatpages.urls’))
Django 的開發環境
manage.py
• Django 專案環境的管理⼯工具
• 可⽤用來
 • 管理資料庫
 • 啟動開發伺服器
 • 備份、還原資料
 • ...
管理資料庫
• 建⽴立資料表:
  manage.py syncdb
• inspect:
  manage.py inspectdb
• 產⽣生 SQL Script:
 • sql / sqlall / sqlclear / sqlcustom /
    sqlfulsh / sqlindexes / ...
啟動開發伺服器
manage.py runserver [OPTIONS]
[[ADDR:]PORT]
• 預設:127.0.0.1:8000
• 優點:會⾃自動載⼊入修改的程式碼
• 限制:同時僅允許⼀一個連線
備份與還原資料
• 備份:
 manage.py dumpdata [APP
 [MODULE]]...
 • 可配合 -a 備份所有模組
 • 建議加上 -n 參數
• 還原:
 manage.py loaddata FILES...
practice
1.建⽴立 ksdg 專案的資料庫
2.啟動開發伺服器
3.開啟 http://localhost:8000/ 網址
4.備份與還原資料
Django 管理主控台
關於管理主控台
• Django 內建管理主控台
• 可快速開發管理主控台模組
• 可⾃自定版型
 • django-grappelli
 • django-admin-tools
 • Nexus
設定管理主控台
• 需啟⽤用下列 App
 • django.contrib.admin
• 需啟⽤用下列 URL 對應
 • url(r’^admin/’, ...)
 • 注意:admin.autodiscover()
建⽴立管理者帳號
• ⽅方法:
 • 在 manage.py syncdb 時
 • 在 manage.py syncdb 後
   • manage.py createsuperuser
practice
1.啟⽤用 Django Admin 應⽤用程式
2.建⽴立⼀一個管理者帳號
3.登⼊入 Django Admin 管理主控台
4.在 Flatpages 應⽤用程式中增加⼀一筆資料
Django 版型系統
設定版型⼦子系統
• 重要參數:
 • TEMPLATE_LOADERS
 • TEMPLATE_DIRS
Context Variable
<!DOCTYPE html>
<html>
    <head>
        <title>{{ flatpage.title }}</title>
    </head>
<body>
{{ flatpage.content }}
</body>
</html>
          <TEMPLATE_DIR>/flatpages/default.html
Template Filter
<!DOCTYPE html>
<html>
    <head>
        <title>{{ flatpage.title }}</title>
    </head>
<body>
{{ flatpage.content|truncatewords_html:3 }}
</body>
</html>
          <TEMPLATE_DIR>/flatpages/default.html
Template Tag
<!DOCTYPE html>
<html>
    <head>
        <title>{{ flatpage.title }}</title>
    </head>
<body>
{{ flatpage.content|truncatewords_html:3 }}
<p>Now: {% now "jS F Y H:i" %}</p>
</body>
</html>
          <TEMPLATE_DIR>/flatpages/default.html
practice
1.修改 TEMPLATE_DIRS 設定值
2.在 <TEMPLATE_DIR> 中建⽴立 flatpages ⺫⽬目錄
3.在 flatpages ⺫⽬目錄中建⽴立 default.html 檔案
4.編輯 default.html
5.開啟 http://localhost:8000/pages/ 網址
下⼀一步呢??
• 詳閱官網上的 Tutorial
• 徹底研究 Django ORM 技術
• 了解 Django URL confs
• 熟悉 Template Filter / Tags 語法
• 表單處理
• 佈署 Django App 的技術
參考資料
• https://docs.djangoproject.com/
• http://www.djangobook.com/
• https://www.djangopackages.com/
• http://www.planetdjango.org/
Q&A

Django step0