高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

開始你的第一個專案

Start Your Engine!

Django安裝好之後,接下來就是要開始你的第一個專案啦。使用方法:

> django-admin.py startproject bookstore

請注意,在某些系統安裝Django,並不一定會有django-admin.py,而是只有django-admin,沒有.py的附檔名,為避免找不到檔案以及節省打字時間,建議在輸入django之後就可以按一下TAB鍵,讓系統幫你自動完成。

如果你在執行django-admin的時候出現command not found的錯誤訊息,表示你可能還沒安裝Django,或是安裝的過程有哪邊出了問題,請再回"安裝Django“章節,看看是不是哪邊有漏了。

沒問題的話,它就會幫你產生一個叫做bookstore的資料夾,內容大概會長得像這樣:

> bookstore  ls -al
total 32
-rw-r--r--  1 eddie  wheel     0 10 18 13:35 __init__.py
-rw-r--r--  1 eddie  wheel   503 10 18 13:35 manage.py
-rw-r--r--  1 eddie  wheel  5037 10 18 13:35 settings.py
-rw-r--r--  1 eddie  wheel   574 10 18 13:35 urls.py

結構很簡單,只有4個檔案:

  • __init__.py 用來告訴Python這個資料夾是一個模組,裡面通常是空的,不過也可以寫一些程式碼在裡面。
  • manage.py 用來操作整個Django專案的小工具,例如啟動伺服器python manage.py runserver,或是同步資料庫python manage.py syncdb
  • settings.py 設定檔
  • urls.py 負責網站的路由。

新專案開好之後,直接在專案的資料夾裡執行python manage.py runserver

> python manage.py runserver
Validating models...

0 errors found
Django version 1.3.1, using settings 'bookstore.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

它會在你的本機開一個port 8000的web server,打開你的瀏覽器,輸入網址http://127.0.0.1:8000/,你應該可以看到這個畫面: image

資料庫設定

在上面的4個檔案裡有個settings.py,裡面有一段是用來填寫資料庫設定的:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

這邊我們就以展示目的,僅使用SQLite做為資料庫,所以請將ENGINE的欄位改成django.db.backends.sqlite3,並將NAME設定為bookstore。另外一樣在settings.py裡,有幾項設定可以一起修改:

TIME_ZONE = 'Asia/Taipei'

修改你的時區,我真希望可以寫Asia/Taiwan!!

LANGUAGE_CODE = 'zh-TW'

語系改成繁體中文,這樣到時候後台的語言就會整個變繁體中文版了。

然後回到終端機視窗執行python manage.py syncdb

> python manage.py syncdb

Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

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
Username (Leave blank to use 'eddie'):
E-mail address: eddie@digik.com.tw
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
No fixtures found.

過程中會問你是不是要建立帳號密碼,這個是給內建的Admin模組用的,之後就可以用這組帳號密碼登入Django超佛心的Admin模組後台。

你可能會好奇為什麼明明什麼程式都還沒寫,然後就幫我建立了一堆的表格了。這是因為Django預設幫你安裝了一些模組了(你一樣可以在settings.pyINSTALLED_APPS段落找到它幫你預設裝了哪些東西。

內建的Admin模組

為什麼說是超佛心的Admin後台模組? 因為你不用寫到任何一行程式就可以有個漂亮而且功能完整的後台可以用了。我們要做的只有幾件事:

  1. 打開settings.py,把INSTALLED_APPSdjango.contrib.admin前面的#註解拿掉
  2. 打開urls.py,把from django.contrib import admin以及admin.autodiscover()兩行的註解拿掉,然後在urlpatterns的最後一行url(r'^admin/', include(admin.site.urls))的註解也拿掉
  3. 執行python manage.py syncdb

這樣就完成了,你做的應該只有拿掉幾個註解,以及syncdb的動作而已。然後請打開瀏覽器,網址輸入http://127.0.0.1:8000/admin/,應該可以看到一個登入畫面: image

輸入你剛剛設定的帳號密碼之後:

image

因為我們還沒有建立任何的Model,所以在這裡除了網站的一些設定以及帳號設定之外,還看不到任何東西。不過想想你還沒寫到一行程式碼就可以有這樣的東西可以用,而且還有中文版的,真的是相當佛心啊!

當然,後台的客製化又是另一個主題了。

Comments