随笔 - 4  文章 - 0 评论 - 0 
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(3)

随笔分类(4)

随笔档案(4)

搜索

  •  

积分与排名

  • 积分 - 2374
  • 排名 - 506

最新评论

阅读排行榜

评论排行榜

django

Ruby on Rails 的官方網站上有 15 分鐘作出一個 weblog 的 screencast,的確 demo 了 RoR 開發的快速。不過萬萬不可太迷信只有 RoR 能這麼神速,根據最近擠出一點時間看 django 的東西後,我也想先來作個「10分鐘做出 blog 的挑戰」。(由於還不太會用製作 screen cast 的軟體,所以只能用文字介紹..)這篇文章只是描述一下建構過程,所以不會介紹 django 環境的安裝設定,請讀者見諒。

稍微簡介一下 django,它是一個基於 Python 語言的 Web 開發框架(framework)。

建立 project 及 app

在 django 的環境裡,一個 project 裡可以有很多個 application,如此一來同一個 project 下的 application 便能共用同一套環境設定。所以我們先在命令列下執行 django-admin.py 來建立一個 project:

先來改一下 demo/settings.py 的設定,裡面設定我們會用 sqlite3 來作資料庫的引擎,然後產生一個 demo.db 的檔案來當資料庫,再設定一些時區及 template 目錄等:

DATABASE_ENGINE = ' sqlite3 '
DATABASE_NAME = ' demo.db '
...
TIME_ZONE = ' Asia/Taipei '
LANGUAGE_CODE = ' zh-tw '
...
TEMPLATE_DIRS = (
...
' . ' ,
)

INSTALLED_APPS = (
' django.contrib.admin ' ,
..
' demo.blog ' , # 等一下就會產生
)
										

然後在 demo 目錄下建立一個 blog 的 app:

然後在 demo/blog/models.py 裡建立需要的 model(DB Table):

from django . db import models

class Category ( models . Model ) :
name = models . CharField ( max_length = 32 )
def __unicode__ ( self ) :
return self . name
class Admin :
pass

class Article ( models . Model ) :
title = models . CharField ( max_length = 64 )
published_at = models . DateTimeField ( ' date published ' )
content = models . TextField ()
category = models . ForeignKey ( Category )
def __unicode__ ( self ) :
return self . title
class Admin :
pass
										

然後可以看看 django 產生的 SQL DDL,確定的話就用 syncdb 來建立資料庫表格:

其中會要求你建立一個管理者帳號,這是為了之後進管理介面發表文章使用的帳號。完成這些動作之後,修改一下 demo/urls.py 的內容:

from django . conf . urls . defaults import *

urlpatterns = patterns ( '' ,
( r ' ^blog/ ' , include ( ' demo.blog.urls ' )) ,
( r ' ^admin/ ' , include ( ' django.contrib.admin.urls ' )) ,
)
										

先在 demo/blog/ 下建立一個 urls.py 的檔案,然後在命令列下輸入 python manage.py runserver,再打開瀏覽器輸入網址 http://localhost:8000/admin/ 馬上就有一個後台介面可以使用了呀!

django6
發表文章的介面還蠻好用的呢

登入後你就可以直接建立 CategoryArtical 的內容,這不就是一個現成的文章發表介面了嗎?一開始操作到現在不會超過5分鐘吧!

文章列表、單篇文章

可以發表文章之後,當然是要能夠瀏覽呀,所以我們馬上打開 demo/blog/urls.py 這個檔案,然後貼上下列的 code:

from django . conf . urls . defaults import *
from demo . blog . models import Article

info_dict = {
' queryset ' : Article . objects . all () ,
}

urlpatterns = patterns ( '' ,
( r ' ^$ ' , ' django.views.generic.list_detail.object_list ' , info_dict ) ,
( r ' ^(?P<object_id> \d +)/$ ' , ' django.views.generic.list_detail.object_detail ' , info_dict ) ,
)
												

然後再分別建立 demo/blog/article_list.htmldemo/blog/article_detail.html 這兩個檔案,分別表示文章列表及文章內容:

article_list.html:

{% if object_list %}
{% for article in object_list %}
< div class = " article " >
< div class = " title " >< a href = " /blog/{{ article.id }} " >{{ article . title }}</ a ></ div >
</ div >
{% endfor %}
{% else %}
< p >對不起沒有文章喔!</ p >
{% endif %}
						

article_detail.html:

< div class = " article " >
< div class = " title " >標題: {{ object . title }}</ div >
< div class = " pub_date " >{{ object . published_at }}</ div >
< div class = " content " >{{ object . content }}</ div >
< div class = " category " >發表於: {{ object . category . name }}</ div >
</ div >
< p >< a href = " /admin/blog/article/{{ object.id }} " >修改</ a ></ p >
< p >< a href = " /blog " > BACK </ a ></ p >
												

這樣很快就弄出一個很像樣的 blog (只是不能留言 XD),網址在 http://localhost:8000/blog/

很快吧!當然我忽略了美工,也沒有客製化一下後台,不過 Web 開發愈來愈可怕了….真怕這種開發框架愈來愈多,老板都覺得寫網頁沒什麼了呢!

值得一提的是,django 在 runserver 之後,都會把程式碼 compile 成 pyc 檔,看起來效率應該還不錯,也許要等我多玩熟一點才能做些實驗囉。

posted on 2008-08-15 12:07 wuxsoft 阅读(896) 评论(0)  编辑 收藏 引用 所属分类: Python&django&appengine
只有注册用户登录后才能发表评论。