论坛首页 编程语言技术论坛

偶对django的rant

浏览 18880 次
精华帖 (4) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-07  
引用
不许if混用and / or,但是要求if嵌套?当模板作者都是白痴啊!

不许写 if a = b,偏要写ifequal a, b,我只能说设计者的脑子进水了!!

这个用起来确实感觉很别扭。

引用
url要用正则匹配

个人感觉这是相当好的一个设计,尤其在实现URL的静态化时。而且Python的正则式支持命名分组,用起来相当爽。

不明白为什么大家对Django的模板如此多的批评,我感觉它设计很不错,尤其是模板的继承,很方便。
0 请登录后投票
   发表时间:2009-04-07  
个人还是那观点,django只适合做适合django做的,那么一切特点都是优点,如果强迫django做不适合它做的,那么一切特点都是掣肘,灵活性需求高一点的不如看看werkzeug之类的吧
0 请登录后投票
   发表时间:2009-04-07   最后修改:2009-04-07
引用
url要用正则匹配
个人感觉这是相当好的一个设计,尤其在实现URL的静态化时。而且Python的正则式支持命名分组,用起来相当爽。
不明白为什么大家对Django的模板如此多的批评,我感觉它设计很不错,尤其是模板的继承,很方便。


即使它支持命名分组,仍然是很糟糕。

对比:

urlpatterns = patterns('',  
    (r'^articles/(?P<year>\d{4})/$', views.year_archive),  
    (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', views.month_archive),  
)  


static mappings = {
  "/$articles/$year/" (view:'year_archive') {
    constraints { year(matches:/\d{4}/) }
  }
  "/$articles/$year/$month" (view:'month_archive') {
    constraints {
      year(matches:/\d{4}/)
      month(matches:/\d{2}/)
    }
  }
}


显然grails的配置方式更直观,更容易维护。

命名组是为了缓解正则的复杂性,但是问题是,我们其实并不需要这个复杂性。
0 请登录后投票
   发表时间:2009-04-07  
http://web2py.com/examples/default/examples#template_examples

觉得web2py的template不错,虽然还是不兼容html,但基本就是python
0 请登录后投票
   发表时间:2009-04-07   最后修改:2009-04-07
django的url
django的url确实有点麻烦,如果设计成zero-configuration就比较好了,我之前也这样做过,利用反射和命名组,可以让一个view中只需要一个url的配置,这样就成了有多少个views.py,就只需要多少行配置
 (r'(?P<method>[a-zA-Z0-9]+)^$', 'inforplatform.bargin.views.execute'))  


然后在views里加上这个方法:
def execute(request, method):  
     return getattr(mark.views, method)(request) 


通过以上这种做法,我们只需要配置一行代码,就搞定了views里的方法,但是这种方法的限制就是views里的其他方法不能再有除request职之外的参数了
-----------------------------------------------------------------------------------------------------
模板语法
对于django的模板,我觉得可以接受,模板的功能都是大同小异的,freemarker,velocity我都是一直在用的,差不了多少,如果从更高的层次上来看,它没有什么明显的优点,但是也没有什么明显的缺点,有点鸡肋的感觉,给人的感觉就是“无所谓”

-----------------------------------------------------------------------------------------------------

模板路径
模板的选择确实不怎么智能,最好是强制要求模板的命名,然后指定字符串就能找到对应的模板,加载之,正如codebehind一样,但是它为啥不这样做,应该是作者想法和我们不一样(俺们也不能要求作者遵循俺们的想法),但是这并不妨碍俺们能将其改造成codebehind那样,其实我们只要写个很简单的方法,根据规则手动拼模板路径就ok了,这个对应要使用coc的人来说不是难事
0 请登录后投票
   发表时间:2009-04-08  
感同身受。我用django做过两个项目,一个网站,一个应用系统,做网站还算方便,做应用系统苦不堪言。如果说URL正则匹配还能忍受的话,那么那个form是我最不能忍受的东西,这明明就是struts里的form啊,照我看来django就是一个python版的struts。
0 请登录后投票
   发表时间:2009-04-08  
一开始研究django,看过pylons后马上放弃了django。如以上朋友所说的,django做他擅长的开发类型比如新闻网站很方便,但是做其它系统特别是应用系统则太不灵活了。

以前听过一个对比:django想引导你去构建它擅长构建的东西;而pylons可作为你构建任何应用背后的基石。

0 请登录后投票
   发表时间:2009-04-08  
呵呵,做网站嘛,还是 php 来得方便
0 请登录后投票
   发表时间:2009-04-08  
引用
一开始研究django,看过pylons后马上放弃了django。如以上朋友所说的,django做他擅长的开发类型比如新闻网站很方便,但是做其它系统特别是应用系统则太不灵活了。

以前听过一个对比:django想引导你去构建它擅长构建的东西;而pylons可作为你构建任何应用背后的基石。

个人认为Django做中小网站是相当的快,确实不适合做应用,做企业应用java还是王道。
0 请登录后投票
   发表时间:2009-04-08  
引用
所以我的理解,不是django设计哲学的问题,实在是python缩进带来的限制,其实你观察一下,没有一个python web框架是直接拿python代码做模板语言的。

python的缩进确实容易出问题,有时候写代码看着明明是对齐了,可是运行的时候就是出错。如果嵌套的层次稍多一点,自己就已经先蒙了,不知道现在在哪一层。还有,在perl里,你可以把多条命令写在一行,发送到远程主机上执行,python肯定是不行了。
各位大牛,Perl有没有像Django这样的WEB框架?如果有真的要好好研究一下。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics