1、codeigniter的业务逻辑在controller中,django的业务逻辑在views中。按照django文档
的说法,它的设计理念基于视图用来决定展现哪些数据和如何展现数据,而与之相对的,CI
的视图则只用来决定如何展现数据,选择哪些数据的部分则被装入了控制层。
2、Django的控制层主要在于URL配置文件,通过它来控制什么样的URL使用什么方法。CI的控
制层有专门的controllers类,通过URL路由来指定使用哪一个类的哪一个方法。
3、codeigniter的url路由只需要在controller中定义方法,然后框架会自动分析url找到对
应的类和方法。采用类、方法、参数的逐级路由形式。而django的url路由采用映射的方式,
手工在url配置文件里添加映射方法。这样貌似灵活度更高,但同时也增加了工作量。
4、CodeIgniter没有强调内置模板,视图文件即是网页文件,直接用php输出controller传来
的数据。controller的方法通过一个变量“data”传递所有数据到view文件。
而Django强调模板概念,类似于格式信函的方式,把数据保存在context变量中,然后来渲
染模板文件。本质上“逻辑/页面”分离方式跟CodeIgniter差不多,但是页面文件要使用专
门的模板语言来写。
在逻辑和页面的分离上,CodeIgniter更加轻量级,对于前后端都要程序员来写的人来说
更方便。而Django页面模板和后端用不同语言也许更适合团队分工明确的项目,对程序员来
说增加了学习成本。
另外,模板标签非常有用,可以让页面进一步分离而重用。
Django模板的本质就是载入html文件,对该文件进行分析并且进行各种操作(比如替换,增加标签等),
然后再发送给浏览器。
模板继承方便了复用代码。这一点比codeigniter好。
5、CI强制程序使用单入口,Django没有这个限制。而另一方面,CodeIgniter非常轻量级,可以自己随心所欲的添加和写代码,不需要拘束于框架本身,但Django就告诉你了一套规则,你必须按照它的这一套规则去做。