述说正确安装Python应用程序过程

开发 后端
Python应用程序其实是一种解释性的语言,使得不好的编程习惯,例如if语句的下一行不向右缩进都不能通过编译。

如果你安装了Python应用程序,这些功能都是可用的除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图形库等等数不胜数,希望大家能够进行学习研究。

最复杂功能最强大的还是freemarker,支持jsp tag的嵌入让我们可以重用很多已经存在的组件,这一点我在之前的文章中也有过比较详细的描述(强强联手,看freemarker和displaytag的结合)。由于了解,才有发言权,django的模板可以说是为互连网应用而诞生的,简洁及快速开发的特点让人情不自禁的喜欢。

关于jsp的题外话,不管是ruby,还是c++,还是Python应用程序,在它们的web框架中都使用了模板,java中也有很多模板。我们最熟悉的是freemarker和velocity。这从一个侧面反映出我们web开发中的一个模式,那就是我们的view基本上是基于模板产生的。

而jsp这个东西应该来说是时代的产物,在那个混乱的落后的时代产生的,不过很奇怪的是现在还有这么多人抱着它不放。Django有两种form,一种是自己定义form class,还有一种是通过我们定义的model自动form class。 由于ahuaxuan只做 了一个信息发布的小例子。

所以并不能全面的了解或者理解django中form的所有细节,不过从我涉及到的部分来讲,我对django的从模型创建表单的做法确实感到有比较大的局限性。因为很多时候,model中的数据 并不是从页面上来的,在这种情况下,form对象被构造出来之后,ahuaxuan还没有找到修改form中值的方法。
 
而自定义form类也比较麻烦,就是要写自己的model,这个和我们之前的做法比较不一样,这里的form代表我们java中的value object,model是domain object。在我们的ssh框架中我们通常把value object继承我们的domain object。虽然一堆又一堆的人提出了反对意见,说要把这两个对象分开。

因为他们处在不同的层次中,但是从实践经验中,我们可以看到,这样做没有什么不好。而在django中自定义form和model分开的行为可能比较符合一些人的心理。 不过自定义forms也有比较让人称道的地方,在form中我们可以自定义验证规则,同时我们可以根据form对象直接生成页面中的内容。

不过这一点其实也有比较麻烦的地方,就是如果要改变样式的时候就比较麻烦。不过总的来说django的form还是比较有特点的,而且一定程度上给我们带来了方便。 Django的url转发是基于正则表达式的,有的人叫好,有的人叫差,我就是叫差的那一拨人之一。url转发应该是一个非常清楚,非常明亮的事情。

可是用上这个正则表达式匹配的东西之后,我郁闷了,所以我只能回到遥远的过去去绕过这个东东,我不用总可以了吧。从形式上来看,两者出奇的相似,比如说传入的参数等。我们知道python是面向对象的语言,但是事实上它也支持函数编程,如果def定义在class内部。

那么就是对象的方法,否则,就可以认为是函数编程了,看看,我们的views里的东西都是函数,views其实是一个模块,这个模块我们可以认为是struts1.x中的action,而views中的函数可以认为是action中的方法。它们是远房亲戚。

Python应用程序的admin功能号称是django的杀手级特性(killer feature),这一说可以说是恰如其分,毫不夸张的,从我做的这个例子来看,当我做网站的时候,基本上只需要关注前台页面的展示这部分。

后台的功能基本上都自动有了,比如我做的例子是一个二手信息发布平台,category是二手信息的类型,还有一个information类,和category是多对一的关系,那么在后台,category和information的crud就自动生产了,由于category本身是一个自关联,所以在admin中 add category的时候,admin会根据我model的定义。

自动要求选择一个parentCategory,而在add information的页面上,admin会要求我选择一个category来完成对一个information的创建,而以前在java中,这些工作都需要自己完成,当然也有很多工具可以自动生产crud。

不过这些开源的工具基本上都是针对单个model的,而且生成的代码需要很大修改才能真正的把功能跑起来,最重要的一点是不能自动生成关联关系的管理。当然我也见过有公司做了基于数据库驱动的代码生产器。

能生成完整可用的代码和页面,也包括关联关系的处理,不过由于语言特性的区别,在开发的时候我们还是要不停的重启server才能显示出效果来,虽然在技术上,为ssh实现这个功能并不难,但是会消耗不少时间在上面,消耗了很多时间的话,很少就有公司将其贡献出来了。

所以个人认为django在这个功能上做得还是非常不错的,尤其这个功能可以节省开发者很多的时间。甚至有些时候,项目可以双线执行,用户通过admin输入数据,程序员开发前台,这样,前台功能做完之后,数据也有了,基本可以测试上线了。在需要快速开发的小项目上,这个特性显得尤其重要,因为django产生得时候就是基于这个场景。

当然有时候后台也没有这么简单,不过还好,admin提供了扩展的功能,我们可以自己写扩展的代码,然后集成到admin中去,不过事实上除了能改变admin的模板,我们不能改变任何admin的代码。

不过我时常在想,如果admin支持代码自动生成的功能,那岂不是很美妙,我们可以随意的修改后台的功能了,否则我们就需要自己写代码,不如在生成的代码上扩展方便。 要使用admin。

必须打开django的权限模块,这里简单介绍一下权限模块,django自带了一个权限模块,这个权限模块中的model对于熟悉权限这块的人来说再熟悉不过了,user,grouppermission,user和group多对多。

Python应用程序permission多对多,在acegi中,我们通常这样定义,user,role,resource,这个和django中的权限是一样的,不过在django中默认的permission的粒度是非常的粗了,是基于model的,如果我们要更细的权限模块,那么就需要自己扩展了。

【编辑推荐】

  1. 有关Python系统文件进行介绍指导
  2. 如何正确的使用Python函数
  3. Python 构建工具进行详细介绍分析
  4. PythonAndroid浅析Python优势所在
  5. 如何使用Python模块解析配置文件?
责任编辑:chenqingxiang 来源: CSDN
相关推荐

2010-02-22 14:54:47

Python应用程序

2021-09-26 08:30:31

Python应用程序代码

2010-01-28 09:44:08

C++应用程序

2011-07-28 15:47:20

IOS 程序 测试

2009-11-25 10:22:28

Linux应用程序安装

2009-09-22 18:39:02

Silverlight

2010-08-11 15:48:04

DB2编程

2010-08-11 15:48:04

DB2编程

2019-08-13 15:39:27

Linux应用程序

2018-03-28 08:30:01

Linux仓库应用程序

2009-08-14 17:57:43

ASP.NET MVC

2010-02-24 16:11:42

Python程序库

2010-06-30 08:41:21

SQL Server嵌

2010-02-02 15:37:11

2010-02-26 11:08:29

Python应用程序

2011-12-07 12:01:31

ibmdw

2010-02-01 14:05:03

2010-02-22 17:46:57

Python应用程序

2022-01-12 06:59:02

C#程序集装载

2012-04-06 14:23:53

技术门诊Android
点赞
收藏

51CTO技术栈公众号