Django 安裝及簡單實例

 Django 安裝及簡單實例

1. Django 安裝

(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的管理模塊。


2. 創建項目

要創建一個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



urlpatterns = patterns('',
(r'^$', 'mysite.hello.index'),
)

    r’^$’:正則,表示根目錄;
    mysite.hello.index:指向mysite這個項目下的hello模塊中的index函數。
剩下的就很簡單了,在mysite文件夾下建立一個hello.py文件,在其中寫入一個index函數:


#hello.py
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很好的教材

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章