Python世界中的Django学习探讨
创始人
2024-06-22 08:01:11
0

下面详细说明Python世界中的django,这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行,本文并不是django的教程,而是ahuaxuan对django的一些见解。

可能有些不成熟的地方,希望大家不要吝惜手中的砖头。如果有人问我最喜欢django什么,我会耗不犹豫的告诉你是django的orm。这个想法的产生完全来自于我长时间来积累的对hibernate的“不满”,虽然从理智的角度来看,hibernate做的是非常的正确的,因为它并不是只针对互连网而产生的。它的主要市场应该还是在企业应用上。

不过把它用在互联网并非不可以,只不过大家更多的时候会选择ibatis之类,因为不知道hibernate的人总是会说hibernate没有ibatis快(其实我最烦这个,片面的比较是没有意义的)。

正是hibernate的目标是打造成java界一个全方位,全能的orm框架,所以的它学习曲线和使用的复杂度日益的提升,要完全掌握好hibernate不是一件容易的事情(不要告诉我你会点crud,知道点lazy load你就掌握好hibernate了)。

再回头来看django的orm,如果说要把hibernate说清楚需要800页的书,那么要把django的orm说清楚,200页就够了(事实上它的官方文档只有十几页的样子)。

下面我举一个我正在做的例子,这里有一个自关联的对象(事实上django的orm是基于model,这点和ror不太一样,有人跟我讲过ror是数据库驱动),这个对象有一个父对象,通常我们的菜单会定义成这样的对象,这样的菜单可以无限级向下扩展:

  1. class Category(models.Model):     
  2.     id = models.AutoField('id', primary_key=True)     
  3.     name = models.CharField(maxlength=50)     
  4.     code = models.CharField(maxlength=50)     
  5.     parentCategory = models.ForeignKey('self', 'id', null=True)     
  6.     enable = models.BooleanField()     
  7.          
  8.     def __str__(self):     
  9.         return self.name     
  10.          
  11.     class Admin:     
  12.         list_display = ('id', 'name', 'code', 'parentCategory')   

Python世界中又定义的Admin是为django的Admin模块服务的。 瞧,我们定义的域模型只需要这些代码就够了,models.Model是父对象。所有的model对象都需要继承这个对象,这个对象提供了很多常用的数据库方法,不过不是基于sql的,还是基于对象的,如同Criteria一样。下面列出常用的一些查询Category的方法。

当然django的orm提供了很多很常用的功能,这里不一一举例了,注意,这里我说的是提供了很多很常用的功能,至于hibenate中比较复杂的映射策略,在django中我并没有看到。

但是我反而高兴我没有在Python世界中找到这个功能,因为django本身的定位是快速的互连网开发,它不需要太多的关注这个领域很少出现的东西,这样带来的优点是学习曲线的降低和开发效率的提高。

【编辑推荐】

  1. 如何使Python嵌入C++应用程序?
  2. 深入探讨Ruby与Python语法比较
  3. Python学习资料介绍分享
  4. Python学习经验谈:版本、IDE选择及编码解 决方案
  5. 浅析Python的GIL和线程安全

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...