最近都在玩Turbogears,遇上不少問題,趁機記下來,免得之後忘了怎麼解決。
1. Turbogears內建的identity很方便,把user, group, permission, session全都解決了。唯一缺的一角是registration, 在Registration for TurboGears可以找到有人寫好的package。
2. 上面提到的registration package,用它網頁上的方法裝並不會自動建立需要的table,還得先在[PACKAGE].egg-info/sqlobject.txt中的db_module後加上[PACKAGE].register_model才行。
3. SQLObject底層用MySQL時,處理UTF-8會有問題。解決的方法是把dev.cfg中的sqlobject.dburi改為:
sqlobject.dburi="mysql://[ID]:[PASSWORD]@localhost:3306/[DATABASE]?
sqlobject_encoding=utf-8&read_default_file=my.cnf"
並且在/etc/mysql/my.cnf中,要在[client]下設定”default-character-set = utf8″
4. registration package底層用MySQL時也會碰上個問題, 錯誤訊息是:
TypeError: decoding Unicode is not supported
我目前是硬hack /usr/lib/python2.4/site-packages/ SQLObject-0.7.1dev_r1860-py2.4.egg/sqlobject/
mysql/mysqlconnection.py 。
在裡面找:
myquery = unicode(query, self.encoding)
改為:
if type(query) != unicode:
myquery = unicode(query, self.encoding )
else:
myquery = query
這樣就不會有問題了。