2007年01月17日 星期三 00:11
昨天要给一个客户做一个小东西,厌倦了PHP,就决定用django试试看,虽然对django也就仅限于知道,大致浏览了一下它的网站;)反正是个小东西,费不了多少时间,估计就几个小时就搞定,结果昨晚搞了大半夜加上今天搞了半天,才算搞定。第一次嘛,怎么样也得纪念一些,放着备忘啊。 1、django不是为了省事的,什么都要你定义,但是定义好了就挺省事,先苦后甜啊 2、我用的Mysql不是utf-8编码,所以一上来就在settings定义DEFAULT_CHARSET = 'gb2312', 这我是用utf-8搜索django代码发现有DEFAULT_CHARSET,试一下,果然搞定。 3、Mysql的datetime允许0000-00-00, 这个django搞不定,这个痛苦,被迫改啊。 4、django的allow_empty缺省是False,这个没注意(想当然认为不会有这种问题),结果给客户时是没测试数据的,当场over,这下丢脸了;-) 5、@login_required的用法,在limodou的step by step里认为不好用,没有默认的login的模版。其实很好用,只是要把django带的template(django\contrib\admin\templates) copy到你的template里,改一下就好了。我想django认为普通客户的登陆和管理员的登陆是不一样的,所以不提供缺省的模版。(limodou真是一个好同志,我就是拿着他的step干的,赞一个!) 6、没有多数据库支持,其他数据只好直接用MysqlDb了,没办法享用django的ORM的好处。 7、直接用数据库的查询的结果怎么传给模版?可以用dictfetchall: from django.db import connection from django.db.backends import util cursor = connection.cursor() cursor.execute("""SELECT * FROM ....""", [....]) data = util.dictfetchall(cursor) return render_to_response('template.html', {'data':data}) 8、template的不能有表达式,我相当然的用if a=b,结果不行,要用ifequal。想想django默认的allow_empty都是False,要大家再努力记多一些规矩也就不奇怪了;-) 9、django的出错后的信息不完全,有很多都没有有效的信息,例如没有行号(我不需要django的core的行号,拜托给我的破代码的行号好不好),有的只能靠猜,这个真的很麻烦。可能不关django的事,python的问题? 10、django的cursor的execute的参数如果用%d就会出错,可是我传过去的确实是int啊,后来我搜了一把代码,似乎没看到用%d,都是%s,改成%s就OK了,这大概不会又是我的想当然了吧? 感觉django确实不是给初学者玩的,想想url要定义regexp就知道了,但是痛苦了一番还是感觉django不错,写起来比PHP舒服,熟悉了以后效率明显比PHP高,看来我以后可以换用django了。 vcc _ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070117/fd24c954/attachment.htm
2007年01月17日 星期三 01:06
On 1/17/07, vcc <vcc在163.com> wrote: > > > 昨天要给一个客户做一个小东西,厌倦了PHP,就决定用django试试看,虽然对django也就仅限于知道,大致浏览了一下它的网站;)反正是个小东西,费不了多少时间,估计就几个小时就搞定,结果昨晚搞了大半夜加上今天搞了半天,才算搞定。第一次嘛,怎么样也得纪念一些,放着备忘啊。 > 1、django不是为了省事的,什么都要你定义,但是定义好了就挺省事,先苦后甜啊 > 2、我用的Mysql不是utf-8编码,所以一上来就在settings定义DEFAULT_CHARSET = > 'gb2312', 这我是用utf-8搜索django代码发现有DEFAULT_CHARSET,试一下,果然搞定。 > 3、Mysql的datetime允许0000-00-00, 这个django搞不定,这个痛苦,被迫改啊。 > 4、django的allow_empty缺省是False,这个没注意(想当然认为不会有这种问题),结果给客户时是没测试数据的,当场over,这下丢脸了;-) > 5、@login_required的用法,在limodou的step by > step里认为不好用,没有默认的login的模版。其实很好用,只是要把django带的template(django\contrib\admin\templates) > copy到你的template里,改一下就好了。我想django认为普通客户的登陆和管理员的登陆是不一样的,所以不提供缺省的模版。(limodou真是一个好同志,我就是拿着他的step干的,赞一个!) > 6、没有多数据库支持,其他数据只好直接用MysqlDb了,没办法享用django的ORM的好处。 > 7、直接用数据库的查询的结果怎么传给模版?可以用dictfetchall: > from django.db import connection > from django.db.backends import util > > cursor = connection.cursor() > cursor.execute("""SELECT * FROM ....""", [....]) > data = util.dictfetchall(cursor) > return render_to_response('template.html', {'data':data}) > > 8、template的不能有表达式,我相当然的用if > a=b,结果不行,要用ifequal。想想django默认的allow_empty都是False,要大家再努力记多一些规矩也就不奇怪了;-) > 9、django的出错后的信息不完全,有很多都没有有效的信息,例如没有行号(我不需要django的core的行号,拜托给我的破代码的行号好不好),有的只能靠猜,这个真的很麻烦。可能不关django的事,python的问题? > 10、django的cursor的execute的参数如果用%d就会出错,可是我传过去的确实是int啊,后来我搜了一把代码,似乎没看到用%d,都是%s,改成%s就OK了,这大概不会又是我的想当然了吧? > > 感觉django确实不是给初学者玩的,想想url要定义regexp就知道了,但是痛苦了一番还是感觉django不错,写起来比PHP舒服,熟悉了以后效率明显比PHP高,看来我以后可以换用django了。 > 收录在啄木鸟维基了: http://wiki.woodpecker.org.cn/moin/DjanGo/feeling 深刻认同:"django确实不是给初学者玩的" 想发挥Django 的高生产效,首先要义无反顾的信任Django,然后就会发现实现web 应用和直接写脚本几乎没有差别了, Karrigell 才是初学者没有挫折感的体验平台, 然后 web.py 可以引导框架的概念, 最后就可以自然的使用Django了, TG 是最H的研究客的游乐场………………呜乎矣哉 > vcc > _ > > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to > python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to > python-chinese-request在lists.python.cn > Detail Info: > http://python.cn/mailman/listinfo/python-chinese > -- '''Time is unimportant, only life important! blog@ http://blog.zoomquiet.org/pyblosxom/ wiki@ http://wiki.woodpecker.org.cn/moin/ZoomQuiet douban@ http://www.douban.com/people/zoomq/ ____________________________________ Please use OpenOffice.org to replace M$ office. http://zh.openoffice.org Please use 7-zip to replace WinRAR/WinZip. http://7-zip.org/zh-cn/ You can get the truely Freedom from software. '''
2007年01月17日 星期三 09:08
On 1/17/07, vcc <vcc在163.com> wrote: > > > 昨天要给一个客户做一个小东西,厌倦了PHP,就决定用django试试看,虽然对django也就仅限于知道,大致浏览了一下它的网站;)反正是个小东西,费不了多少时间,估计就几个小时就搞定,结果昨晚搞了大半夜加上今天搞了半天,才算搞定。第一次嘛,怎么样也得纪念一些,放着备忘啊。 非常好啊。 > 1、django不是为了省事的,什么都要你定义,但是定义好了就挺省事,先苦后甜啊 > 2、我用的Mysql不是utf-8编码,所以一上来就在settings定义DEFAULT_CHARSET = > 'gb2312', 这我是用utf-8搜索django代码发现有DEFAULT_CHARSET,试一下,果然搞定。 > 3、Mysql的datetime允许0000-00-00, 这个django搞不定,这个痛苦,被迫改啊。 在django的model定义时,可以对Date之类的Field指定 auto_now=True(表示当修改时自动将当前时间填入)或auto_now_add=True(表示当增加新记录时使用当前时间填入),所以相当于缺省值。 > 4、django的allow_empty缺省是False,这个没注意(想当然认为不会有这种问题),结果给客户时是没测试数据的,当场over,这下丢脸了;-) 对于空值有两种处理:一种是字段值可以为空,那么需要设置null=True,这样在生成的create table语句中就没有NOT NULL了。用户可以不填值。还有就是与admin相关的blank=True,表示它是否可以不录入。因此就是两种不同的处理。blank=True并不表示null=True。 > 5、@login_required的用法,在limodou的step by > step里认为不好用,没有默认的login的模版。其实很好用,只是要把django带的template(django\contrib\admin\templates) > copy到你的template里,改一下就好了。我想django认为普通客户的登陆和管理员的登陆是不一样的,所以不提供缺省的模版。(limodou真是一个好同志,我就是拿着他的step干的,赞一个!) > 6、没有多数据库支持,其他数据只好直接用MysqlDb了,没办法享用django的ORM的好处。 你是说同时支持多个数据库吗?django有一个多数据库的分支,不过我没有看过。应该是可以同时使用多个后台数据库,邮件列表有人贴过简单的配置代码。 > 7、直接用数据库的查询的结果怎么传给模版?可以用dictfetchall: > from django.db import connection > from django.db.backends import util > > cursor = connection.cursor() > cursor.execute("""SELECT * FROM ....""", [....]) > data = util.dictfetchall(cursor) > return render_to_response('template.html', {'data':data}) > 这个不错,学到了。 > 8、template的不能有表达式,我相当然的用if > a=b,结果不行,要用ifequal。想想django默认的allow_empty都是False,要大家再努力记多一些规矩也就不奇怪了;-) 为了解决这个问题,我开发了pyif 可以实现复杂的表达式处理。 > 9、django的出错后的信息不完全,有很多都没有有效的信息,例如没有行号(我不需要django的core的行号,拜托给我的破代码的行号好不好),有的只能靠猜,这个真的很麻烦。可能不关django的事,python的问题? 因为有些异常django是处理后返回的,所以的确是一个问题。有时实在没有办法,我会去修改django的异常处理代码,在except 后面添加: import traceback traceback.print_exc() 这样就可以在console中看到实际的异常了。 > 10、django的cursor的execute的参数如果用%d就会出错,可是我传过去的确实是int啊,后来我搜了一把代码,似乎没看到用%d,都是%s,改成%s就OK了,这大概不会又是我的想当然了吧? > 有可能,你应该检查一个你的值的类型,如type(var) > 感觉django确实不是给初学者玩的,想想url要定义regexp就知道了,但是痛苦了一番还是感觉django不错,写起来比PHP舒服,熟悉了以后效率明显比PHP高,看来我以后可以换用django了。 > 这个参考一些例子很容易解决,基本的就那么几种: (?P\w+) 字符串 (?P \d+) 数字 常用的可能就这么多了。再有就是^和$了。 -- I like python! UliPad < >: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2007年01月18日 星期四 17:57
> > > 收录在啄木鸟维基了: > http://wiki.woodpecker.org.cn/moin/DjanGo/feeling > > 深刻认同:"django确实不是给初学者玩的" > > 想发挥Django 的高生产效,首先要义无反顾的信任Django,然后就会发现实现web 应用和直接写脚本几乎没有差别了, > > Karrigell 才是初学者没有挫折感的体验平台, > 然后 web.py 可以引导框架的概念, > 最后就可以自然的使用Django了, > TG 是最H的研究客的游乐场………………呜乎矣哉 TG的确是一个能够让人发疯的东西,一半的时间是在等待中度过。 -- 武长斌 chbin.w at gmail.com
2007年01月18日 星期四 18:02
On 1/18/07, Î䳤±ó <chbin.w在gmail.com> wrote: > > > TG ÊÇ×îHµÄÑо¿¿ÍµÄÓÎÀÖ³¡¡¡¡¡¡¡ÎغõÒÓÔÕ > > > TGµÄÈ·ÊÇÒ»¸öÄܹ»ÈÃÈË·¢·èµÄ¶«Î÷£¬Ò»°ëµÄʱ¼äÊÇÔڵȴýÖжȹý¡£ > > ʲôÒâ˼£¿µÈ´ýʲô£¿ -- simple is good http://brucewang.net skype: number5 -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070118/956fee0b/attachment.html
2007年01月18日 星期四 18:17
不知道是我哪里设置的原因还是什么,改了代码以后, 要等待很长时间,tg才能重启完。 用了两周就不行了,好像就写过俩小东西,不知道现在还在运行否。 在 07-1-18,Bruce Wang<number5 at gmail.com> 写道: > > > On 1/18/07, 武长斌 <chbin.w at gmail.com> wrote: > > > TG 是最H的研究客的游乐场………………呜乎矣哉 > > > > > > TG的确是一个能够让人发疯的东西,一半的时间是在等待中度过。 > > > > > > 什么意思?等待什么? > > -- -- 武长斌 chbin.w at gmail.com
2007年01月18日 星期四 18:27
On 1/18/07, Î䳤±ó <chbin.w在gmail.com> wrote: > > ²»ÖªµÀÊÇÎÒÄÄÀïÉèÖõÄÔÒò»¹ÊÇʲô£¬¸ÄÁË´úÂëÒÔºó£¬ > ÒªµÈ´ýºÜ³¤Ê±¼ä£¬tg²ÅÄÜÖØÆôÍê¡£ > ÓÃÁËÁ½ÖܾͲ»ÐÐÁË£¬ºÃÏñ¾Íд¹ýÁ©Ð¡¶«Î÷£¬²»ÖªµÀÏÖÔÚ»¹ÔÚÔËÐзñ¡£ > > Õâ¸öÒª¾ßÌå¿´ÁË£¬cherrypyÓÐautoreload¹¦ÄÜ£¬Ò»°ãdebugµÄʱºò²»ÐèÒªÖØÆôµÄ ¶øÒ»°ã¾ÍËãCtrl-CÖжϺóÖØÆô£¬Ò²²»ÐèÒªºÜ¾Ã¡£ -- simple is good http://brucewang.net skype: number5 -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070118/96aab0fa/attachment.htm
Zeuux © 2025
京ICP备05028076号