不知道各位是怎么解决如下的2个Django问题的

0 views
Skip to first unread message

忧郁王子

unread,
Nov 9, 2009, 2:42:46 AM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
使用Django有很长一段时间了~对它是又爱又恨, 爱的是它的高集成度和app的插槽机制, 恨的是它的模板系统和数据库机制, 所以, 就有了以
下2个疑问:

1.各位是如何解决模板需要简单python语法的需求的.
我举个小例子, 我一个类似论坛的程序, 当用户访问其中一个帖子内容的时候, 可以看到该帖子的回复, 每20个回复为一页, 当用户访问第三页的时
候, 回复的编码应该是21-30, 但是在模板里, 我怎么做这个数字的加法呢? 目前想到的办法是, 返回当前页面的第一个回复的数字, 下面的用
add这个filter来加.不知道还有没有别的解决方案呢? (我能想到的就是换模板引擎和写一个自定义tag)

2.各位是如何解决数据表更改的问题的
Django的syncdb在第一次使用的时候, 其实是非常舒服的, 但是一旦我改了数据表的结构, 事情就没那么简单了(我知道一次性规划好数据库
结构是个很好的习惯和方法, 但是谁也不能保证数据库不会有大的变化), 再次使用syncdb的话, 数据库结构是不会有变化的, 如果只是在开发阶
段, 那么还好, 数据不要了, 我重新建库, 现在的问题是, 如果里面已经有了大量数据呢, 我怎么样能保证数据的完整性并迁向正确的数据结构
呢?

不知道大家是怎么解决这个问题的, 这2个问题困扰了我很久.

@@

unread,
Nov 9, 2009, 2:50:32 AM11/9/09
to pyth...@googlegroups.com
第二个问题 用south

2009/11/9 忧郁王子 <myking...@gmail.com>:

deafwolf

unread,
Nov 9, 2009, 2:54:31 AM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
1. 有分页的view
2. python manage.py sqlall,比较两份sql,然后手工alter table。

忧郁王子

unread,
Nov 9, 2009, 3:20:10 AM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
1.分页的view, 是用generic-view吗?
2.看来也只能手动修改table了

诚子

unread,
Nov 9, 2009, 3:26:13 AM11/9/09
to pyth...@googlegroups.com
我解决这个问题的步骤
第一个解决方法是用mako
第二个解决方法是用sqlalchemy(一样的问题,我主要是解决灵活性和性能问题,django甚至显示SQL还要装插件)
第三个解决方法是重构时把django移除了,改用轻量级框架,想咋改就咋改。

2009/11/9 忧郁王子 <myking...@gmail.com>



--
my.unix-center.net/~WeiZhicheng

头太晕

unread,
Nov 9, 2009, 3:27:57 AM11/9/09
to pyth...@googlegroups.com
2009/11/9 忧郁王子 <myking...@gmail.com>
1.分页的view, 是用generic-view吗?

有专门分页用的相关模块.
而且,你说的那个标号,可以用其它方式实现.

 
2.看来也只能手动修改table了

smallfish

unread,
Nov 9, 2009, 3:32:16 AM11/9/09
to pyth...@googlegroups.com
嘿嘿,明摆着是web.py把...
--
http://pythonchina.org
http://hi.baidu.com/smallfish_xy


2009/11/9 诚子 <zhiche...@gmail.com>

诚子

unread,
Nov 9, 2009, 3:37:50 AM11/9/09
to pyth...@googlegroups.com
嘿嘿,就不是web.py,
其实是tornado.
不过个人觉得web.py和tornado属于同
等类型的框架,
选tornado的原因是它内置了webserver,
本人不喜欢把配置文件改来改去。
还有性能的原因。

2009/11/9 smallfish <smallf...@gmail.com>



--
my.unix-center.net/~WeiZhicheng

@@

unread,
Nov 9, 2009, 3:37:52 AM11/9/09
to pyth...@googlegroups.com
在来推荐一次 souch :) http://south.aeracode.org/

是用来解决第2个问题的。

South is:

我也只是用过最简单的场景。复杂的功能还没用过
主要的好处:
1、不用自己写alter table的脚本了。 所有的都是manage.py xxx就搞定了。
2、会生成一个数据变更的.py文件,这个的好处是你可以把这个文件放到svn里或者传到服务器上
再执行一个south的命令就可以同步了。这样的话,使别人安装了你的老的程序,再升级也很简单了

诚子

unread,
Nov 9, 2009, 3:42:00 AM11/9/09
to pyth...@googlegroups.com
这个我听说过,但从来没用过。

2009/11/9 @@ <ask...@gmail.com>



--
my.unix-center.net/~WeiZhicheng

@@

unread,
Nov 9, 2009, 3:47:25 AM11/9/09
to pyth...@googlegroups.com
我也是听这个名字很久了,一直没有去用。。 
简单的一个tutorial写了4大页,每次进去看到他的文档都让我觉得这个是一个很难用的东西。

但是有一天终于受不了改个结构还要自己写半天脚本,这些变化还非常不好管理。终于决心去试试这个东西。
试下来感觉很不错,其实普通的变化试用起来很简单(复杂的还没试过)。
还没用过的可以尝试下:)

2009/11/9 诚子 <zhiche...@gmail.com>

忧郁王子

unread,
Nov 9, 2009, 3:50:14 AM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
关于第一个问题, 我觉得使用什么分页都没有用, 因为分页只是一个例子, 其它的应用会有其它的需求
第二个问题, 我觉得使用sqlall也许是个解决方案, 手动完成, 毕竟里面已经有数据了, 不能要求程序来强行去改变字段的名字和属性, 因为程
序并不知道这一列就是你要改的那一列.

On Nov 9, 4:42 pm, 诚子 <zhicheng1...@gmail.com> wrote:
> 这个我听说过,但从来没用过。
>
> 2009/11/9 @@ <ask...@gmail.com>
>
>
>
>
>
> > 在来推荐一次 souch :)http://south.aeracode.org/
>
> > 是用来解决第2个问题的。
>

> > South is <http://wiki/About>:
>
> > - *Intelligent*; it knows if you've missed out<http://wiki/About#MissingMigrations> a
> > migration or two
> > - *Database independent <http://wiki/About#DatabaseIndependence>*, so


> > there's no hassle if you need to move databases.

> > - Easy; it can *write migrations for you<http://wiki/About#AutomaticMigrationCreation>
> > *.
> > - Designed for a *pluggable Django world*; you can declare dependencies<http://wiki/Dependencies> between


> > apps so they all migrate together correctly, and you can still use syncdb
> > for your non-migrated apps without it interfering.

> > - Useful for *data too*; you can write migrations to transform legacy
> > data <http://wiki/Tutorial3>.

Leo Jay

unread,
Nov 9, 2009, 3:53:08 AM11/9/09
to pyth...@googlegroups.com
2009/11/9 诚子 <zhiche...@gmail.com>:

> 嘿嘿,就不是web.py,
> 其实是tornado.
> 不过个人觉得web.py和tornado属于同
> 等类型的框架,
> 选tornado的原因是它内置了webserver,
> 本人不喜欢把配置文件改来改去。
> 还有性能的原因。
>

webpy也有webserver啊,好像是从cherrypy搞来的。

--
Best Regards,
Leo Jay

@@

unread,
Nov 9, 2009, 3:53:24 AM11/9/09
to pyth...@googlegroups.com
south对许rename的情况,需要自己修改下脚本。
否则会被认为删除字段再添加自动。

第一个如果用的很多的话写个filter或者tag好了。
如果不多写view里也费不了多少事


2009/11/9 忧郁王子 <myking...@gmail.com>

DIrk

unread,
Nov 9, 2009, 4:19:29 AM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
{{ page_obj.start_index|add:forloop.counter0 }}

如果能用了翻页器,试试上面的代码。

忧郁王子

unread,
Nov 9, 2009, 4:36:51 AM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
分页的问题只是我举的一个例子, 我实际想要的, 是对python语法的支持

一千瓦的刀狼

unread,
Nov 9, 2009, 6:55:14 AM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
问题一、django自带的页面模板系统对python的支持是有限的,如果你需要更多的python语法支持,建议你使用第三方的模板,比如
mako。
问题二、至于你说的数据迁移,django提供了一个比较土的方式,有一个小工具可以使用,你还是去官网找一找相关的介绍吧。

mengqc

unread,
Nov 9, 2009, 10:50:57 PM11/9/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
在view中把页面编号编号之后再传到模板里不行吗?python的动态语言可以动态添加属性进去。

On 11月9日, 下午3时42分, 忧郁王子 <mykinghea...@gmail.com> wrote:

Reply all
Reply to author
Forward
0 new messages