探秘丰富多彩的Python开发语言

开发 后端
Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。

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

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

所以在admin中 add category的时候,admin会根据我model的定义,自动要求选择一个parentCategory,而在add information的页面上,admin会要求我选择一个category来完成对一个information的创建。

而以前在java中,这些工作都需要自己完成,当然也有很多工具可以自动生产crud,python不过这些开源的工具基本上都是针对单个model的,而且生成的代码需要很大修改才能真正的把功能跑起来。

最重要的一点是不能自动生成关联关系的管理。当然我也见过有公司做了基于数据库驱动的代码生产器,能生成完整可用的代码和页面,也包括关联关系的处理,不过由于语言特性的区别。

在开发的时候我们还是要不停的重启server才能显示出效果来,虽然在技术上,为ssh实现这个功能并不难,但是会消耗不少时间在上面,消耗了很多时间的话,很少就有公司将其贡献出来了。

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

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

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

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

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

我们来看一下使用fastcgi的一般模式:1、WEB服务器收到客户端的页面请求 2、WEB服务器将这个页面请求委派给一个FastCGI 外部进程(WEB服务器于FastCGI之间是通过socket来连接通讯的) 3、FastCGI外部进程得到WEB服务器委派过来的页面请求信息后进行处理。

并且将处理结果(动态页面内容)返回给WEB服务器 4、Web服务器将FastCGI返回回来的结果再转送给客户端浏览器。 对我们来说第3步是我们最需要关注的,因为第3步的速度严重影响着整个性能。

由于fastcgi是基于进程的,所以,我们要根据我们的应用来开启数量合适的fastcgi进程,多开了是对资源的浪费,少开了就影响性能,这个类似我们在tomcat中开启处理请求的thread一样,只不过tomcat中的request handler thread在配置起来显然更加方便,因为我们只要关注线程池中最大的可以容纳的线程数,最大空闲线程数等就行了。

【编辑推荐】

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

2010-02-22 18:25:07

2010-02-03 18:06:42

Python语言

2010-02-05 16:28:07

Android

2010-03-03 16:08:20

Android手机系统

2009-12-22 17:00:58

ADOMD.NET对象

2010-02-06 16:02:57

Android 应用程

2010-03-19 14:12:06

太网交换机

2009-12-17 14:01:44

Visual Stud

2010-02-04 14:27:11

2010-01-08 10:41:56

JSON 数据

2010-01-06 16:02:53

2010-02-03 15:58:53

Python应用程序

2010-01-27 10:29:39

C++代码解析

2009-12-17 14:45:37

Visual Stud

2010-01-14 15:15:39

C++Test

2010-01-12 14:52:00

C++技术

2009-12-18 15:49:12

ADO.NET组件

2010-01-13 18:30:18

CC++程序设计

2021-11-12 20:00:52

Linuxcowsay命令

2009-12-09 10:34:10

嵌入式Linux操作系
点赞
收藏

51CTO技术栈公众号