On twitter

@tonychou 植樹節居然放假!!

follow me on twitter

Archive for July, 2009

Aeron chair 4

aeron
這張椅子真的太 high 了, 今天送到公司, 一坐上去就整個人飛起來了!!!

July 31st, 2009 Life Tags: ,

django grappelli 0

grappelli django grappelli 真的是滿酷的, 裝好之後, django admin 馬上就變成這樣, 而且還加上了 bookmarks 的功能, 還可以自定 navigation, 而整個界面整個質感提升了 :D

另外, 最主要的一點就是, grappelli 稍微讓 django admin 在 Content Type 的 UI 處理, 改善了一些, 不過應該可以更好就是了, 有空再來改。

另外, 如果只想改善 django admin 的 content type, 可以試試看這個 django-genericadmin, 不過我還沒試過就是了 XD

話說, 剛剛查了一下 grappelli 這個字, 指的是 Stéphane_Grappelli, 似乎他的稱號是”一代爵士小提琴宗師格拉佩里”, 而 django 指的是 Django Reinhardt, 一位爵士吉他手。 而看了 Stéphane_Grappelli 才知道, 他們有一起玩音樂阿!!!! 名字取的太妙了 XD

July 23rd, 2009 Programming Tags: , , ,

Gondola CMS 1

Gondola CMS, 前幾天看到這個用 django 做的 CMS 的影片真的是太驚為天人了阿!!! 請看 video!! 不過… 還沒 release XD

超帥的吧!! 如果有用過 django admin 並試著去 extend 自己的 admin template 的人應該就可以了解。

以前有找過一些用 django 寫的 cms 或是 blog, 不過他們的後台都直接用 django admin, 也不是不好看, 可是就是沒有產品的感覺, 舉例來說, 像是 wordpress 這樣的後台, 就有一種他是一個產品之類感覺。 之類的啦 XD

不過也可能是因為 django admin 真的是太方便了, model 訂好, admin.site.register 一下後台就出現了。 anyway, Gondola CMS 他的 admin 後台真的自訂的太恐怖了!!!

July 22nd, 2009 Programming Tags: , , ,

django-pagination 1

我只能說, django-pagination 真是一個好物。

雖然說 django 本身提供的 pagination 就已經很不錯用了, 可是在使用上還是稍嫌多餘了些, 得在 view 重複的打上那一段 code, 而 template 那邊也是, 除非就是自己寫 template tag 來處理。

django 原本提供的 pagination, 在寫 view 的時候大概像是這樣: (直接拿 django 的 example)

from django.core.paginator import Paginator, InvalidPage, EmptyPage

def listing(request):
    contact_list = Contacts.objects.all()
    paginator = Paginator(contact_list, 25)

    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    try:
        contacts = paginator.page(page)
    except (EmptyPage, InvalidPage):
        contacts = paginator.page(paginator.num_pages)

    return render_to_response('list.html', {"contacts": contacts})

而如果使用 django-pagination 的話, 看到 view 就真的是會笑出來了 XD

def listing(request):
    contacts = Contacts.objects.all()
    return render_to_response('list.html', {"contacts": contacts})

就這樣! 而且還不用 import Paginator。

基本上 django-pagination 的處理動作都在 template 那邊, 看起來大概像是這樣

{% load pagination_tags %} # 載入 template tag

{% autopaginate contacts 10 %} # 加上這一行處理分頁
{% for contact in contacts %}
    {{ contact.name }}
{% endfor %}

{% paginate %} # 秀出分頁

That’s all! :D

比照一下 django 內建的 pagination, 就可以明顯比較出 template 之間差別了, django-pagination 真是超令人開心的一個套件阿, 而且作者還提供了一個 screencast

真的是太貼心了阿~

July 21st, 2009 Programming Tags: , ,

Django 1.0.2 ModelForm 的地雷 0

'RelatedObject' object has no attribute 'unique' thrown by ModelForm validation

今天在使用 Django ModelForm 的時候採到一個地雷, 秀出了上面這一串訊息, 然後是發生在 form.is_valid() 的時候, google 了一下, 原來是因為我在 form 裡面放了一個不屬於 model 的欄位。 可以看看 django trac 的這個 ticket

簡單舉例一下, 我有 Song model 跟 SongStyle model 這兩個 model, 而 SongStyle 當然要 form 秀出來給使用者填選, 所以我在 Song 的 ModelForm 加上了一個 song_styles 的 ChoiceField, 結果就出現了錯誤。( SongStyle 有個 ForeignKey 指向 Song )

不過這個問題 django 1.1 已經解決了, 1.0.2 還是有這個問題, 如果不想用 django 1.1 的話 … 看看這裡自己 patch 吧。

July 21st, 2009 Programming Tags: ,
Partners of Oceanic / 人生海海

jiwo sca wellmeet