Upload
-
View
818
Download
0
Embed Size (px)
DESCRIPTION
2013/04/14 在 KSDG 的 Workshop 之投影片
Citation preview
Learning Django Step 0
Cd ChenThe co-founder of passpass.cc / niceStudio.
About
陳永昇 (Cd Chen)http://www.cdchen.idv.tw/
學歷:國⽴立台中科技⼤大學經歷:聯成電腦講師恆逸資訊講師現職:乃師實業技術總監passpass.cc 創辦⼈人證照:
RHCE / LPIC / NCLP MCSA / MCSE OCPJP / OCPJWCDTCSE / 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
• 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 djangoenvNew python executable in djangoenv/bin/python2.7Also creating executable in djangoenv/bin/pythonInstalling 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 djangoDownloading/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 775Successfully installed djangoCleaning up...(djangoenv)[cdchen@devel djangoenv]$
建⽴立 Django 專案(djangoenv)[cdchen@devel djangoenv]$ lsbin include lib lib64(djangoenv)[cdchen@devel djangoenv]$ django-admin.py \> startproject ksdg(djangoenv)[cdchen@devel djangoenv]$ lsbin 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.db3.加⼊入或啟⽤用下列 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
<!DOCTYPE html><html> <head> <title>{{ flatpage.title }}</title> </head><body>{{ flatpage.content }}</body></html>
<TEMPLATE_DIR>/flatpages/default.html
Context Variable
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.html5.開啟 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