200905070154Django 安裝及實作筆記(一)

Django 的安裝及實作筆記: Django 是一個Python的mvc程式框架,可以大幅加速撰寫動態網頁流程,很酷喔!(註: 這跟攝影無關喔...寫給自己看的啦!)

1. 先下載Python,並安裝之。

2. 設定系統的PATH,增加指向Python的目錄(例:c:\Python2.6)。

3. 下載Django,解壓縮之後,打開『命令提示字元』視窗(命令列),並轉換到解壓縮後的目錄中,執行 setup.py install。Django 的程式碼會被複製到Python的目錄中。

4. 記得要把 django-admin.py 從 C:\(Python的目錄)\Scripts,copy 到Python的主目錄下,這樣在做下一步時,才不會找不到django-admin.py。

5. 接下來是增加一個site,開始產生網站程式。先在命令列中,轉移到欲存放網站程式碼的地方,假設是在 C:\Documents and Settings\Administrator\。接下來執行:

    django-admin.py startproject <網站名稱>。(例: Mytest)

    註:其實,可以打django-admin help,就可以了解所有的指令喔!

                        django-admin help <指令>,就可以看到該指令的說明。

6. 接下來,以此例為說明,會在 C:\Documents and Settings\Administrator\下出現 Mytest 目錄。此目錄下有四個檔案:

    __init__.py
    manage.py
    settings.py
    urls.py

7. 在 setting.py 中編輯設定資料庫連線資料。

    DATABASE_ENGINE = 'sqlite3' (本例使用sqlite)     
    DATABASE_NAME = 'C:\Documents and Settings\Administrator\Mytest\sqlite.db' (本例使用sqlite,所以填入欲使檔案所在之位置及檔案名稱。)

8. cd Mytest

9. 執行 manage.py syncdb。Django 會先產生對應的資料庫檔案。

10. 接下來,新增一個應用程式:pools。

     manage.py startapps pools

     在 Mytest 目錄下,多了一個pools 的目錄。裡面多了三個檔案:

     __init__.py
     models.py
     views.py

11. 根據 Django Project 的文件中教學文章 『Writing your first Django app, part 1 ~4』,現在要來建立model。一共有兩個model: Pool and Choice。編輯 model.py 如下:

   from django.db import models

   class Poll(models.Model):
       question = models.CharField(max_length=200)
       pub_date = models.DateTimeField('date published')

   class Choice(models.Model):
       poll = models.ForeignKey(Poll)
       choice = models.CharField(max_length=200)
       votes = models.IntegerField()

12. 啟動 models。編輯 settings.py。在INSTALLED_APPS下增加:'Mytest.pools'。

     INSTALLED_APPS = (
         'django.contrib.auth',
         'django.contrib.contenttypes',
         'django.contrib.sessions',
         'django.contrib.sites',
         'Mytest.polls' )

13. 執行 manage.py suncdb

14. 加入 admin 介面:

     a. 編輯 settings.py。在INSTALLED_APPS下增加:'django.contrib.admin'。

     INSTALLED_APPS = (
         'django.contrib.auth',
         'django.contrib.contenttypes',
         'django.contrib.sessions',
         'django.contrib.sites',
         'django.contrib.admin',
         'Mytest.polls' )

      b. 執行 manage.py suncdb

      c. 編輯 urls.py,將下列黑體字列的"#"拿掉。

         from django.conf.urls.defaults import *

         # Uncomment the next two lines to enable the admin:
            from django.contrib import admin
            admin.autodiscover()

          urlpatterns = patterns('',
         # Example:
         # (r'^mysite/', include('mysite.foo.urls')),

         # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
         # to INSTALLED_APPS to enable admin documentation:
         # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

         # Uncomment the next line to enable the admin:
         (r'^admin/', include(admin.site.urls)),  )

15. 啟動管理介面。

     mamage.py runserver 

16. 打開瀏覽器,執行:http://127.0.0.1:8000/admin/,出現登錄畫面。第一步算是完成了。

    

17. 如果前面忘記建立superuser,可以用指令 manage.py createsuperuser 建立。

18. 登入"admin"之後,出現"Site administration" 的畫面。但只能對『Sites』、『Groups』、『Users』等基本資料做管理。這是最陽春的管理介面。

19. 不過,我們可以建立一個 admin.py 的檔案,增加下列程式碼,讓前面建立的"Polls" 可以被加入到管理介面,可直接用Django的管理介面來做增刪資料的動作。

from Mytest.polls.models import Poll
from django.contrib import admin

admin.site.register(Poll)

畫面結果:

 

20.依樣畫葫蘆,把 Choice 的表格也加入吧!

from Mytest.polls.models import Poll
from Mytest.polls.models import Choice
from django.contrib import admin

admin.site.register(Choice)
admin.site.register(Poll)

畫面:

21.按下 polls,再隨選或新增一個項目,可以看到下面的畫面(按下日期也有日曆畫面可以選擇喔,預設的畫面就已經如此完整了!):



22. 當然,我們可以做得再細一些,將 admin.py 新增或修改成下列的樣子:

from Mytest.polls.models import Poll
from Mytest.polls.models import Choice
from django.contrib import admin

class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 4

class PollAdmin(admin.ModelAdmin):
    fieldsets = [
          (None, {'fields':['question']}),
          ('Date information', {'fields':['pub_date']})
    ]

 
   inlines = [ChoiceInline]
    list_display = ('question', 'pub_date')
    list_filter = ['pub_date']
    search_fields = ['question']
    date_hierarchy = 'pub_date'


admin.site.register(Choice)
admin.site.register(Poll, PollAdmin)

下面的畫面,已經用紅框框把顯示效果和程式碼做一個連結:

 

若點選 Question 其中的一項,例如:"台北市民調2009-05-15",就會看到以下的畫面:


其實這樣已經可以增修刪這 Poll 及 Choice 的資料了,我們可以全部按照預設,一行code都不用寫,也可以寫幾行code就有這麼多變化,Django admin interface 真是很powerful 啊。

admin.py 程式碼裡面的API,在文件:The Django admin site 都有詳細的提到

待續.......................

 

回應

Hi! 大家好, 我選擇用照片來寫日記,紀錄心情,也把它和大家分享, 有興趣的話, 來信交個朋友吧. email: chaoyee@seed.net.tw
Google Analytic