uliweb guestbook 排錯

來源:互聯網
上載者:User

 

uliweb作者是國內python高手limodou,一直在他寫的用ulipad,感覺很不錯。

今天抽空看了一下uliweb的教程,把uliweb裡面內建的demo guestbook用svn下載下來試了一下,結果出錯了。出錯圖如下所示:

一頭霧水,秉承"知之為知之,不知google之"的優良傳統,搜一下,也沒什麼結果,可能uliweb還是比較新的東西,大家接觸並討論的比較少。看起來這次要靠自己了。仔細看了一下錯誤,是說datetime的值為None,沒有strftime屬性。有點類似C中的null 指標啦。

最後把錯誤定位在 /demos/guestbook/apps/GuestBook/models.py代碼如下

<br />from uliweb.orm import *<br />import datetime<br />class Note(Model):<br /> username = Field(str)<br /> message = Field(text)<br /> homepage = Field(str)<br /> email = Field(str)<br /> datetime = Field(datetime.datetime, auto_now_add=True) 

如果猜的不錯,應該是最好一句Field傳回值為空白。

為了驗證我的猜測,只有到原始碼中需找答案了,Field 的datetime功能是由orm模組DateTimeProperty,開啟檔案/uliweb/orm/__init__.py(版本是SVN:223)

轉到第337行查看DateTimeProperty類的建構函式

 

  def __init__(self, verbose_name=None, auto_now=False, auto_now_add=False,<br /> **kwds):<br /> super(DateTimeProperty, self).__init__(verbose_name, **kwds)<br /> self.auto_now = auto_now<br /> self.auto_now_add = auto_now_add<br /> def validate(self, value):<br /> value = super(DateTimeProperty, self).validate(value)<br /> if value and not isinstance(value, self.data_type):<br /> raise BadValueError('Property %s must be a %s' %<br /> (self.name, self.data_type.__name__))<br /> return value<br /># def default_value(self):<br /># if self.auto_now or self.auto_now_add:<br /># return self.now()<br /># return Property.default_value(self)<br />#<br /> def get_value_for_datastore(self, model_instance):<br /> if self.auto_now:<br /> return self.now()<br /> else:<br /> return super(DateTimeProperty,<br /> self).get_value_for_datastore(model_instance) 

 

呵呵,問題應該就出在注釋掉的幾行,我查詢了一下SVN的log,應該是在220和221版本之間修改了這幾行。

有個疑問是 auto_now_add和 auto_now有什麼區別嗎?這個還沒想想通。

 

我們就找到瞭解決這個問題的方法了:

將 /demos/guestbook/apps/GuestBook/models.py中的最後一行的auto_now_add 修改為 auto_now即可:

 

#datetime = Field(datetime.datetime, auto_now_add=True)<br /> datetime = Field(datetime.datetime, auto_now=True) 

 

總體來說,uliweb還是挺不錯的,比django還容易上手,繼續學習……

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.