Python论坛  - 讨论区

标题:[python-chinese] django的第一次亲密接触

2007年01月17日 星期三 00:11

vcc vcc在163.com
星期三 一月 17 00:11:14 HKT 2007

昨天要给一个客户做一个小东西,厌倦了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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月17日 星期三 01:06

Zoom.Quiet zoom.quiet在gmail.com
星期三 一月 17 01:06:17 HKT 2007

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.
'''

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月17日 星期三 09:08

limodou limodou在gmail.com
星期三 一月 17 09:08:59 HKT 2007

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月18日 星期四 17:57

武长斌 chbin.w在gmail.com
星期四 一月 18 17:57:57 HKT 2007

> >
> 收录在啄木鸟维基了:
> http://wiki.woodpecker.org.cn/moin/DjanGo/feeling
>
> 深刻认同:"django确实不是给初学者玩的"
>
> 想发挥Django 的高生产效,首先要义无反顾的信任Django,然后就会发现实现web 应用和直接写脚本几乎没有差别了,
>
> Karrigell 才是初学者没有挫折感的体验平台,
> 然后 web.py 可以引导框架的概念,
> 最后就可以自然的使用Django了,
> TG 是最H的研究客的游乐场………………呜乎矣哉


TG的确是一个能够让人发疯的东西,一半的时间是在等待中度过。

-- 
武长斌
chbin.w at gmail.com

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月18日 星期四 18:02

Bruce Wang number5在gmail.com
星期四 一月 18 18:02:09 HKT 2007

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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月18日 星期四 18:17

武长斌 chbin.w在gmail.com
星期四 一月 18 18:17:54 HKT 2007

不知道是我哪里设置的原因还是什么,改了代码以后,
要等待很长时间,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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月18日 星期四 18:27

Bruce Wang number5在gmail.com
星期四 一月 18 18:27:20 HKT 2007

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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号