跳到主要內容

Django 安裝及實作筆記(一)

----

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 都有詳細的提到


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


 


留言

  1. 步驟19

    from Mytest.polls.models import Poll

    應該改為

    from Mytest.pools.models import Poll

    因為步驟10創建的app 是 pools

    回覆刪除
  2. 我想請問一下 我再第五步驟發生一些問題

    我輸入 django-admin.py startproject 

    這段程式要建置網頁時候

    他都會出現 讓我選擇一個工具才開啟

     請問我是哪邊發生問題

    回覆刪除
  3. 我一直都卡在無法建置網頁那邊

    我參考了很多網頁的教學步驟

    基本上 我都和其他人一樣

    但是一直都無法建置出 網頁

    真的好奇怪

    回覆刪除

張貼留言

這個網誌中的熱門文章

我從擲筊學到的事

擲筊的目的與功能 擲筊(跋桮)是道教信仰中一種祈求神靈意見的工具,我發現是一種非常有用的方法。擲筊不僅是作為人與神明之間溝通的一種工具,如能善加運用,更能讓神明指點與幫助信眾,發揮濟世救人的精神與目的。 擲筊的原則 一般會將擲筊斥為迷信,主要是因為只看到了擲筊本身的隨機性,認為擲筊所顯示的聖筊或陰筊,只是隨機出現的現象,並非神意,進而否定無形神明的存在。然而並非如此。因為: 無形的神明是存在的,而且神明可以控制筊杯。 擲筊有嚴謹的規則,並非依賴隨機而成的卦象。 就嚴謹的規則而言,請見(註一) 所列的書。我要在此強調,因為擲筊有嚴謹的規則,有邏輯的流程,所以問出來的答案才有意義。 寺廟的選擇 神明是住在寺廟裡的,所以要問事,請神明幫忙,最好是去寺廟裡問。 首先,我建議去問事的寺廟,有以下幾個原則: 1. 地方大廟 雖然廟越大,並不代表就越靈,但是該廟一定要在地方上是一座指標性的寺廟,這樣的話,至少有一定的水準在。 2. 以正神為主 所供奉的神明應以正神為主,如觀世音菩薩、天公廟、天上聖母、關聖帝君、玄天上帝等等。正神明道德、修正氣,也是我們處世為人效法的對象。 3. 百年歷史 廟有一定的歷史,代表著已經經過很長一段時間的考驗。 4. 有口碑、事蹟豐富 若是有很多事蹟,代表著該位神明神通廣大,很會辦事。 5. 香火鼎盛 很多人在拜的廟宇,當然該廟的神明遇到的案子數量就越多,種類也就越豐富,這代表該廟的神明處理事情有著非常豐富的經驗,對我們要問、要祈求的事情,想必也能駕輕就熟。    不建議 1. 香火不興盛、沒什麼人拜 這種寺廟有幾種可能,也許是正神已經不在了,或是廟方管理人道德有所虧欠,或不會經營,亦或是地處偏遠,交通不便。這種寺廟除非與你有特殊因緣,否則不建議。 2. 個人宮壇 像有些個人宮壇有詐騙的行為,所以必須看清楚,不要事情沒解決,反而被騙財,甚至騙色。 3. 陰廟 到陰廟許願祈求,通常是需要還願的,就是和鬼神交換條件,倘若願望達成卻忘記還願,恐怕會產生一些問題。所以建議去祭祀正神的廟參拜,因為正神無所求,不會因為你忘記還願而責怪甚至降禍於你。 入廟後參拜及擲筊的流程 通常遵循「 左青龍進,右白虎出 」的原則,由面對著廟的方向,右邊的門進入,中間的門是給神明出入的,所以信眾不得從此進出。 進廟之後,將供品及金紙置於供桌上,然後取香依照廟方所...

西國三十三所觀音巡禮攻略

  西國三十三靈場納經帖 「西國三十三所」觀音巡禮有著一千三百年的歷史,可以說是日本最早的朝聖之路。我發願要在2024年完成「西國三十三所」觀音巡禮,在搜尋資料及計畫行程的階段時,發現在網路上的行程資料很少,不像「四國遍路」的行程資料豐富且多樣(車行、徒步及混合大眾交通工具)。於是在我進行這次巡禮之際,我盡可能的詳細紀錄行程細節,並編輯整理之後公佈,希望能夠對有意願進行此項朝聖計畫的人有幫助。 「西國三十三所」雖然不如「四國遍路」的寺院多,只有三十三所,加上三所別格寺院,也只有三十六所寺院。不過這些寺院的分佈非常的廣闊,最西邊的圓教寺在兵庫縣姬路市,最東的華嚴寺位於岐阜縣,最南邊的青岸渡寺在和歌山縣,最北邊的成相寺到了日本海側的京都府,直線距離來說,南北有二百二十多公里,東西有一百九十多公里,橫跨兵庫縣、京都府、大阪府、滋賀縣、和歌山縣、奈良縣、岐阜縣,範圍之大,除非開車,絕非短短數日能夠完成。 西國三十三所觀音巡禮寺院分佈圖 巡禮的交通方式如同「四國遍路」,有徒步、開車,以及「混合大眾交通工具加徒步」的方式。我是採用後者,所以必須對搭乘大眾交通工具的時刻表進行非常仔細的研究,以利於在有限的時間內做最有效率的接駁。以我的經驗來說,計算接駁的時間及搭乘的班次是計畫行程中最耗費時間與精力的部分。好在現在有 Google Maps,可以協助我做路線與交通工具的選擇與接駁規劃。 另外,我採用兩種方式來進行巡禮:將所有寺院分成兩個部分,第一個部分是比較靠近京都的二十所寺院,第二個部分是離京都很遠的外圍寺院。第一個部分我在2024年5月份完成,第二個部分則是在2024年12月完成。京都附近的20所寺院的交通方式其實非常簡單,大部分都位於市區,搭乘地鐵公車或徒步皆可抵達,交通方式網路上的資料很多,此處不再贅述。我只針對比較偏遠且大眾交通工具較不便利的寺院做解說。 我購買外國人才能使用的「關西廣域鐵路周遊劵」來節省交通費用,所以行程儘量選擇使用JR(鐵路)的方式。因為一張周遊劵的期限是五日,我購入兩張周遊劵,必須在十日內走完13所寺院才行。 住宿的考量除了預算之外,地點的選擇非常重要。因為行程很緊湊,所以都安排在車站附近走路不超過三分鐘的旅館。車站附近通常有超市、超商,採購補給方便。 當然,我的行程是沒有按照寺院番號的順序。如果要按照順序的方式來走也是可以的。...

祖先遷葬的奇事

緣起 我們家祖先的墓一共有三個,一個是高祖母許劉員、曾祖父許求、曾祖母許潘烏甜合葬的墓。一個是祖父許財旺的墓。另一個是祖母許陳快的墓。 為何會想要遷葬? 一來是祖先的墓有點年久失修,祖父墓的墓碑甚至有反潮變色的現象,代表墳墓內部已經浸水。考量修墓的經費可能會很多,對於大家而言,可是一筆不小的經濟負擔。 二來是我們這一代的年紀漸漸的老了,下一代的子孫不見得會照顧這些祖先的墓。如此的話,對於祖先就有所虧欠了。必須得考慮一個一勞永逸的方案。 第三,是來自小弟 Jemic 的訊息,他說有來自祖先的一些訊息及徵兆,要我們子孫好好處理祖先墓的事。其經過也是滿奇特的,請參考 他的部落格 。