about 4 years ago

  • 建置專案
  • 進行環境設定-利用settings.py
    • 路徑(path)設定
    • 除錯模式設定
    • Application安裝
    • 根URL配置
    • 資料庫設定
    • 語言與時區

建置專案

安裝好Django之後,我們可以在命令列下使用命令django-admin.py來建置django的專案:

$ django-admin.py startproject mysite

你會發現在當前目錄下,新增了一個叫做mysite的子目錄,該目錄的結構如下

mysite-|--manage.py
       |--mysite----|--__init__.py
                    |--settings.py
                    |--urls.py
                    |--wsgi.py

各檔案的簡單描述如下:

檔案 描述
manage.py Python命令搞,提供了使用者能方便管理專案的功能,包含建置app、啟動server/shell等
mysite 是該專案的主目錄,包含了重要的設定檔和RootURLConf
__init.py__ 一個空檔,但使得該目錄(較下層的mysite)成為一個Python package.
settings.py 本專案的設定檔
urls.py url的根設定檔

接著我們使用manage.py來啟動Django中自建的簡單server來將web運行起來

$ python manage.py runserver

接著在瀏覽器中使用url127.0.0.1:8000就可以在本地端看到成功運行的網頁了

進行環境設定-利用settings.py

settings.py是整個專案的主設定檔,我們將他打開來瞧瞧,發現裡面會有非常多以全大寫為名的變數,我們可以對較重要的幾個進行設定

路徑(path)設定

在settings.py中,對於該專案的基本路徑已經設妥

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

這裡的BASE_DIR指的是專案目錄(也就是上層mysite)的路徑,千萬不要搞錯了,

跳出來講一下,在Python中,__file__ 指的是當下該命令搞的檔名,而使用os.path.dirname(__file__)會找出該檔所在目錄的路徑,即為子目錄mysite,而連續使用兩次得到的路徑(子目錄的目錄)自然就是上層mysite

往後要設定任何一種路徑(比如說模版路徑),只要使用如下語法即可輕鬆設置

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR,  'templates'),
)

往後在上層mysite中建立一個目錄templates就可以放置所需的樣板了(關於樣板,我們之後會提到,上面的設定如果不懂,讀者可以先跳過)

除錯模式設定

Django中有非常強大的除錯模式,在建置專案時是預設打開的

DEBUG = True
TEMPLATE_DEBUG = True

千萬要記得,在網站上真正上線時,絕對要將除錯模式關閉,這除了是專業性的問題,也牽涉到資安

Application安裝

在Django中,project跟app是不同的,我們可以針對不同的功能撰寫application(app),在將其組合成一個project(web),也可以想像成app是project的元件,而且是可插拔的,往後在別的project中需要同樣功能時,將app安裝即可,settings.py中,INSTALLED_APPS這個元組可以指定想要安裝的app,而預設在settings.py中的那些app都是Django內建的,如果暫時不需要也可以將之註解掉,而目前我們還沒有進一步使用到app的結構,所以我們暫時也不需設定。

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

根URL配置

ROOT_URLCONF = 'mysite.urls'

預設的檔案就是當前目錄中(下層mysite)的urls.py,這裡的形式是匯入會用到的namespace形式,urls不加.py

資料庫設定

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

預設這邊使用sqlite3來當資料庫server,當然我們也可以改為其他Django支援的database,不過為了設定上的簡單,我們暫且使用內建的sqlite

語言與時區

最後我們可能比較關注的是語言與時區,預設設定都是美國時間,如下:

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

我們可以將LANGUAGE_CODE的值改為'zh-TW'就能將主語言改成中文,並將TIME_ZONE改為'Asia/Taipei'就能使用台灣時區的時間喔!

LANGUAGE_CODE = 'zh-TW'
TIME_ZONE = 'Asia/Taipei'

當然設定不只這些,但以初次學習而言,可以先依照上述配置,接下來會介紹如何使用視圖和url設定完成你的第一個頁面!

← MAMP環境設定 Django筆記(2) - 視圖與URL →
 
comments powered by Disqus