(1)首先下載Django
wget www.djangoproject.com/download/1.3/tarball/
得到Django-1.3.tar.gz,將其解壓後安裝
tar xzvf Django-1.3.tar.gz
cd Django-1.3
sudo python setup.py install
如果提示缺少setuptools還要下載安裝setuptools(建議提前安上,因爲在安裝MySQL for Python的時候也會用到)。
完成安裝後,Django會拷貝一個django-admin.py到/usr/local/bin下,這個py文件引入了Django的管理模塊。
要創建一個Django項目非常簡單,使用startproject命令,輸入項目名稱:
django-admin.py startproject mysite
Django會在當前目錄下自動生成一個名爲mysite的文件夾,即項目文件夾,裏面有以下文件(.pyc在第一次執行後纔有,剛建立時可能只有幾個.py後綴的文件):
urls.py
settings.pyc
settings.py
manage.py
__init__.pyc
__init__.py
__init__.py/__init__.pyc:可以是空文件,只是表明這個文件夾是一個可以導入的包,這個文件在安裝配置時不會用到。
settings.py/settings.pyc:配置文件,配置Django的一些信息,最主要是數據庫信息、加載模塊的信息。
manage.py:命令行工具,實現與Django之間的交互。
創建項目後,進入項目文件夾,啓動Django自帶的web服務器:
python manage.py runserver
Django會自動檢查配置文件中的錯誤,如果全部正常則順利啓動:
Validating modelsxn--
0 errors found
Django version 1.2.3, using settings ‘mysite.settings’
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
訪問http://127.0.0.1:8000,如果順利顯示,說明Django已經可以正常使用了。但現在只有本機可以訪問,要讓外網能夠訪問,或是要更換默認的8000端口,可以執行命令:
python manage.py runserver 0.0.0.0:8080
這樣就將端口修改爲8080,且外網也可以通過IP訪問本機上的Django。
3. Django連接Mysql數據庫
編輯配置文件(settings.py),修改此處:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #設置爲mysql數據庫
'NAME': 'dmyz', #mysql數據庫名
'USER': 'root', #mysql用戶名,留空則默認爲當前linux用戶名
'PASSWORD': '', #mysql密碼
'HOST': '', #留空默認爲localhost
'PORT': '', #留空默認爲3306端口
}
}
再次使用runserver命令(通常來說Django會自動重新加載settings.py文件的),就可以使用Mysql數據庫了。
因爲Django要通過Python操作Mysql,所以要先安裝Mysql for Python。在Ubuntu下安裝還會提示EnvironmentError: mysql_config not found。因爲通過apt-get安裝的mysql沒有安裝開發工具包,所以找不到mysql_config文件,使用以下命令安裝:
sudo apt-get install libmysqld-dev
4. 設置URL
URL配置文件很象一個目錄,Django會通過URL配置文件來查找相應的對象,URL地址的使用正則表達式設置。在mysite目錄下可以找到urls.py文件,它是URL配置的默認起點(也可以通過編輯settings.py中的 ROOT_URLCONF值來修改)。直接編輯urls.py
(r'^$', 'mysite.hello.index'),
)
r’^$’:正則,表示根目錄;
mysite.hello.index:指向mysite這個項目下的hello模塊中的index函數。
剩下的就很簡單了,在mysite文件夾下建立一個hello.py文件,在其中寫入一個index函數:
from django.http import HttpResponse
def index(request):
return HttpResponse('hello, world')
刷新網站首頁,就可以看到已經輸出了”hello, world”。
另一種方法: 設置一個hello模塊只是方便理解Django的結構,但如果一個首頁就要使用那麼多代碼,是很不pythonic的,所以在生產環境中我們的首頁通常會這麼來寫:
#url.py
urlpatterns = patterns('',
url(r'^$', 'django.views.generic.simple.direct_to_template', {'template':'index.html'}),
)
Django會自動在模板目錄中找到並加載index.html,只需要修改url.py一個文件就搞定了。
5. 創建Application
上一節”hello world”的例子只是說明了URL的用法,可以說完全沒有用到Django。Django作爲一個Web框架,目的是實現MVC的分離,它可以自行處理一些通用的操作,讓開發人員可以專注於核心應用的開發。所以,本文的最後一步將編寫一個名爲article的應用,從mysql數據庫裏讀取出文章作者、標題、內容。
首先建立應用:
python manage.py startapp article
在項目文件夾中會增加一個article文件夾,裏面有如下文件
models.py
views.py
__init__.py
models.py:模型文件,用一個 Python 類來描述數據表,運用它可以通過簡單的 Python 的代碼來創建、檢索、更新、刪除數據庫中的記錄而無需寫一條又一條的SQL語句。
views.py:視圖文件,用來聯繫模型與模版。
然後編寫模型文件(article/models.py),用來實現對數據庫的操作:
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=50)
author = models.CharField(max_length=50)
content = models.CharField(max_length=200)
現在要修改配置文件(settings.py)文件,告訴Django這個應用是項目的一部分,打開配置文件,在尾部找到INSTALLED_APPS元組,將article添加進去:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django_openid_auth',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
#……
'article', #加入app
)
可以現運行manage.py sql article命令進行測試,如果可以看到生成的sql語句,說明模型已經正常設置,可以初始化並安裝:
python manage.py syncdb
Django會自動創建名爲article_article的表。而且,因爲在INSTALLED_APPS中使用了django.contrib.auth,所以syncdb命令會要求提供一個管理員帳號和密碼,用來登錄Django的管理工具。
You just installed Django’s auth system, which means you don’t have any superusers defined.
Would you like to create one now? (yes/no): yes
簡單的模型就設置完成了,現在來設置視圖,編輯視圖(article/views.py)文件:
# article/views.py
from django.shortcuts import render_to_response
from models import Article
def latest_article(request):
article_list = Article.objects.order_by('-id')
return render_to_response('article/article.html',{'article_list':article_list})
2行:導入Django的render_to_response()函數,它用來調用模板、填充內容和返回包含內容的頁面。
3行:導入之前編寫模型文件中的Article類。
4~6行:定義一個latest_article函數,利用Article類從數據庫獲得數據,並按照id倒序輸出。然後調用模版文件,將變量傳遞過去。
在上面的代碼中使用的模版文件,它的地址是設置文件中的模版路徑+在views.py中定義的路徑,因此如果報錯TemplateDoesNotExist at 路徑的話,很可能就是忘了設置模板路徑。
編輯設置文件(settings.py),修改TEMPLATE_DIRS,設置一個模版路徑,這裏將模版目錄直接指定在項目文件夾(mysite)中:
TEMPLATE_DIRS = (
"/var/www/mysite"
)
這樣程序運行時,加載的靜態模版就是 /var/www/mysite/article/article.html了。如果使用過其它框架或者模板引擎,下面article.html的內容就很容易看懂了,Django在模版文件中利用相應的TAG控制傳遞過來的變量顯示的位置:
{% for article in article_list %}
Author:{{ article.author }}
Title:{{ article.title }}
Content:{{ article.title }}
{% endfor %}
最後,修改URL配置文件,讓article/指向視圖(views.py)中定義的latest_articl函數:
(r’^article/’, ‘mysite.article.views.latest_article’),
這樣所有的配置就完成了,當訪問 http://127.0.0.1:8000/article,Django就會自動讀取數據庫中的內容,並顯示在網頁上了。
6. 最後學習
本文的一些設置並不適用於實際生產環境,比如URL配置,爲了方便重用,通常都會使用include的方式,而在這裏則是直接指定。所以本文旨在介紹一些入門知識和快速配置的方法,如果希望更規範的學習Django,首推Django的官方文檔,其次是Djangobook,我更新這篇文章的時候Djangobook2.0中文版已經翻譯了大半了,也是學習Django很好的教材