随笔分类 -  技.技术研究

摘要:记得有人跟我说过,rails的has_many :through是一个”亮点“,在Django看来,该功能简直不值一提。rails中的many-to-many关联中,还需要你手工创建关联表(写migration的方式),而has_many :through的”语法“只不过是为了自定义关联关系:通过一个中间的、到两端都是many-to-one的模型类实现多对多关联。 在Django中,many-to-many的中间关系表是自动创建的,如果你要指定一个自己的Model类作为关系对象,只需要在需要获取对端的Model类中增加一个ManyToManyField属性,并指定though参数。比如现在我们 阅读全文
posted @ 2012-02-09 15:30 心内求法 阅读(3229) 评论(0) 推荐(0) 编辑
摘要:有了上一节关于Django模板的基础,改造界面就很容易理解了。将界面设计师设计的页面中的内容根据复用程度分别放到基础模板base.html和专用模板productlist.html中。depot/templates/base.html<html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name=&qu 阅读全文
posted @ 2012-01-31 19:02 心内求法 阅读(6295) 评论(5) 推荐(0) 编辑
摘要:scaffold的生成物虽然用处不大,但是给我们带来一些最佳实践。其中就有模板的继承和分区。如果你深入使用过rails的模板体系,那么恭喜你:你有超强的忍耐力!而且更重要的是,你只需要3分钟就可以理解Django的模板体系。让我们先回顾一下rails的模板系统:1. 你创建了一个xxxview,展现出一些数据。2. 你意识到,各个view都有一些共同的内容。因为rails也强调DRY,所以你决定将这些共同的部分抽取出来。rails也看到了这点,所以你很高兴的看到,rails支持layout。3. rails的layout很简单,类似html的代码,<%= yield %>部分会被具 阅读全文
posted @ 2012-01-31 18:07 心内求法 阅读(6151) 评论(0) 推荐(2) 编辑
摘要:之前生成了Product类的scaffold,但是如同rails的开发者David所讲的那样,scaffold几乎没什么用。所以按照《Agile Web Development with Rails 4th》中的迭代计划,下一步的修改是美化list页面:但是这个界面还是太丑陋了。其实,有了bootstrap后,很多站点都变成了“又黑又硬”的工具条+“小清新”风格。我们即不能免俗,又懒得自已设计风格,不妨用bootstrap将产品清单界面重新设计成如下的风格:下面让我们来实现这个界面。显然web界面会使用一些静态资源(css,js,image等),要在Django中引入静态资源)。Django在 阅读全文
posted @ 2012-01-31 11:58 心内求法 阅读(23384) 评论(4) 推荐(2) 编辑
摘要:在上一节用一个插件生成了类似rails的scaffold,其实无非就是URLconf+MTV。让我们看看具体都生成了哪些东西。 首先是“入口”的定义即URLconf,打开urls.py:from django.conf.urls.defaults import patterns, include, urlfrom depot.views import hellourlpatterns = patterns('', url(r'^hello/ hello),)urlpatterns += patterns ('', (r'^depotapp/ 阅读全文
posted @ 2012-01-30 23:25 心内求法 阅读(6638) 评论(1) 推荐(0) 编辑
摘要:rails有一个无用的”神奇“功能,叫做scaffold。能够在model基础上,自动生成CRUD的界面。说它无用,是因为rails的开发者David说,scaffold”不是应用程序开发的目的。它只是在我们构建应用程序时提供支持。当你设计出产品的列表该如何工作时,你依赖于“支架”“生成器”产生创建,更新,和删除的行为。然后在保留这个“动作”时你要替换由“生成器”生成的行为。有时候当你需要一个快速接口时,并且你并不在乎界面的丑陋,“支架”就足够用了。不要指望scaffold能满足你程序的所有需要"。 说它神奇,是因为在rails中你不清楚他是怎么实现的。只告诉你一句话:约定优先于配置 阅读全文
posted @ 2012-01-30 14:34 心内求法 阅读(9760) 评论(8) 推荐(0) 编辑
摘要:Depot是《Agile Web Development with Rails》中的一个购物车应用。该书中用多次迭代的方法,逐步实现购物车应用,使很多人走上了rails开发的道路。遗憾的是Django世界中好像没有类似的指引,也许是因为pythoner 不需要具体的例子。但是如果通过这样一个例子能够让更多的人加入pythoner的队伍,也是一大幸事。本文首先回顾一下depot的需求,在后续内容中将会按照《Agile Web Development with Rails》中的迭代进度,逐步用Django实现depot购物车应用。在原例子的基础上,还会增加一些新的内容,以适应企业级应用的开发。同时 阅读全文
posted @ 2012-01-29 19:56 心内求法 阅读(11326) 评论(2) 推荐(1) 编辑
摘要:对于一个web框架,掌握了三部分的内容,就可以说是迈出了第一步。1. 准备开发环境2. 创建一个工程,并运行3. 开发hello world应用1. 准备环境 首先应该是安装python和django。这点官方网站有很详细的说明,网上也有很多教程,这里就不再重复了,只是表达一个对操作系统的观点: Mac OS:对程序员和用户都很友好 Linux: 对程序员很友好 Widows:对用户貌似友好 到底使用哪个操作系统,仁者见仁。 然后是开发工具的选择。建议抛弃IDE,使用一个好的文本编辑器。强烈推荐vim。但如果你选择Emacs,我无话可说。2. 创建工程 Django作为一个we... 阅读全文
posted @ 2012-01-29 18:31 心内求法 阅读(9406) 评论(3) 推荐(1) 编辑
摘要:MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中: M 管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)。 C 接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带。 V 负责把数据格式化后呈现给用户。在《Agile Web Development with Rails》中有这样一张图对MVC模式进行了很好的解释:Django也是一个MVC框架。但是在Django中,控制器接受用户... 阅读全文
posted @ 2012-01-29 15:29 心内求法 阅读(10810) 评论(0) 推荐(3) 编辑
摘要:Django (/ˈdʒæŋgoː/) 是用python语言写的开源web开发框架(open source web framework),鼓励快速开发,并遵循MTV设计模式。其主要目的是简便、快速的开发数据库驱动的网站。 Django遵守 BSD版权,目前最新的稳定版(stable)是2011年9月发布的v1.3.1。 Django 的名称来源于比利时的爵士音乐家Django Reinhardt,他是一个吉普赛人,主要演奏吉它。 与rails一样,Django强调 松耦合、少写代码、快速开发、DRY、一致性等原则。但Django与rails在设计哲学上最大的不同在于,Django强调 阅读全文
posted @ 2012-01-29 14:39 心内求法 阅读(3339) 评论(1) 推荐(2) 编辑
摘要:摘要: 面向对象和面向过程其实并没有本质的区别。试想,对于面向过程的程序看作一个大的对象,那么全局变量就是属性,全局函数就是方法。只不过这个系统只有一个类。阅读全文心内求法 2006-11-22 13:54 发表评论 阅读全文
posted @ 2006-11-22 13:54 心内求法 阅读(247) 评论(0) 推荐(0) 编辑