Django框架中各部分的开发理念是怎样的?

开发理念不仅是Django开发者开发Django之初的指导思想,也是Django发展和完善之时应遵循的准则。Django的使用者在使用Django框架时不应与Django开发者的理念相悖。了解Django开发理念有助于理解Django框架。下面将介绍Django的开发理念。

总体上,Django遵循各部分松耦合、代码尽可能精简、保证Web开发效率、避免重复、明确优于隐式(保证不熟悉框架的人也能了解框架的工作,或能快速掌握框架的工作)这些理念,同时官方对Django的模型、数据库API、URL设计、模板、视图以及缓存框架这些部分的设计理念做了进一步细化,具体分别如下:

1.模型

①明确优于隐式。模型不应仅基于字段名来假设某些行为,模型的行为应基于关键字参数和字段类型。

②定义模型表现的数据以及与数据相关的所有信息。模型应按照Martin Fowler(马丁·福勒)的Active Record(活动记录)设计模型,一个模型类对应关系数据库中的一个表,一个模型类的实例对应表中的一行记录。

2.数据库API

①保证效率。应尽量少地执行SQL语句、在内部优化SQL语句。

②简洁、强大的语法。数据库API语法应以尽可能少的语法,实现丰富且准确的语义。

③提供方便执行原始SQL语句的方式。应认识到数据库API只是一个便捷方式,而非最终的全部手段。Django框架应具备容易编写自定义SQL语句的功能。

3.URL设计

①松耦合。Django应用中的URL不应与底层Python代码耦合。

②无限灵活。网址应尽可能灵活,任何可想到的URL地址都应被允许。

③鼓励最佳实践。Django框架应使开发人员足够容易地设计出漂亮的URLs。

④对URL进行定义。技术上,foo.com/bar和foo.com/bar/是两条不同的URL,搜索引擎与爬虫会将其视为独立的页面,Django会将其转为“标准”的URL,让搜索引擎与爬虫正确识别。

4.模板系统

①逻辑与表现分离。模板系统的基本目标是控制表现方式和表现方式逻辑,它不应支持超出基本目标的功能。

②避免冗余。大多数动态网站会使用一些网站整体通用的设计,如页眉、页脚、导航栏等。Django模板系统应可以很容易地存储这些元素,从而减少代码的重复。

③与HTML解耦。模板系统不应被设计成只能输出HTML,它应该同样擅长生成纯文本,或其他基于文本的格式。

④XML不应被用于模板语言。如果使用XML去解析模板,在编辑模板的过程中会引入很多人为错误,在模板处理中导致不可接受的开销。

⑤预设设计师的能力。Django模板系统不承担保证模板可以在编辑器中友好显示的功能,它期望模板编写者有直接编辑HTML文本的能力。

⑥显式对待空格。模板系统不应该支持空格实现更多的功能。如果模板包含空格,那么系统在处理文本时只需直接地显示空格。

⑦不要发明一种编程语言。模板系统的目标是提供足够的、具有编程风格的功能,比如分支和循环,而不是发明一种编程语言;同时模板语言应避免高级逻辑。

⑧安全和保障。拆箱即用的模板系统应禁止包含恶意代码,如删除数据库记录的命令。这也是模板系统不允许有Python代码的另一个原因。

⑨可扩展。模板系统应意识到高阶的模板作者可能想扩展其技术。

5.视图

①简洁。编写视图应和编写Python函数一样简单,开发人员不应该在函数执行时实例化一个类。

②使用请求对象。视图应该能够访问一个请求对象——一个存储关于当前请求的元数据的对象。对象应该直接传递给视图函数,而不必从全局变量访问请求数据的视图函数。

③松耦合。视图不应该关心开发人员使用哪种模板——甚至不关心开发人员是否使用模板系统。

④GET和POST的区别。框架应使得GET和POST数据很容易区分。

6.缓存框架

①更少的代码。缓存应该尽可能快,因此,围绕缓存的所有后端框架代码都应该保持在绝对的最小值,特别是对于getO操作。

②一致性。缓存API应该为不同的缓存后端提供一致的接口。

③可扩展性。缓存API应该基于开发者的需求,在应用程序级别上是可扩展的。

文章来源于:王晴儿网页设计博客 欢迎分享交流,转载请注明出处

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/262451.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年5月8日 01:09
下一篇 2023年5月8日 01:09

相关推荐

  • 教你junit框架原理。

    JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。JUnit是事实上的单元测试的标准框架,任何Java开发者都应当学习并使用JUnit编写单元测试。 Java之Junit框架如何使用 JUnit是Java编程语言…

    2024年7月10日
    00
  • 教你SEO个人发展,常见的规划流程是什么。

    对于seo而言,你是否发现一个“怪异”的情况,那就是多年过后,你仍然拿着3K-5K的工资,然后在回头看看早几年做web前端和网页设计的同事,是否有些感概。实际上对于刚入行业的SEO专员而言,很少有过认真做过自己的个…

    2023年6月22日
    00
  • Kerberos怎样做身份认证?

    在大数据领域,安全永远是一个绕不开的话题。对于一个简单安装上线的系统 hadoop 集群,我们可以认为有如下安全隐患: 如此,可以人为地添加一个客户端节点,并以此假冒的客户端来获取集群数据。对于一个假冒的客户…

    2023年5月13日
    03
  • 教你如何设计网站能提高用户搜索流程体验。

    搜索功能在大多数网站都成了一个不可或缺的功能,除非网站极其扁平、信息极少,否则都需要配备搜索功能。在信息轰炸的互联网,用户都是带着目的去搜索。初的搜索框只是一个普通的UI控件,但随着用户使用频率上升,…

    2023年6月8日
    00
  • 小编教你网站设计的基本流程是什么。

    网站,指的是在互联网上用于展示内容的相关网页的集合。网站是由域名、网站源程序和网站空间三部分构成。网站空间由专门的服务器或虚拟主机承担;网站源程序则放在网站空间里面,表现为网站前台和网站后台。网站设计…

    2023年6月15日
    04
  • 教你ZooKeeper同步框架怎么实现「zookeeper 同步」。

    ZooKeeper同步框架的实现主要依赖于ZooKeeper提供的分布式协调服务,ZooKeeper是一个开源的分布式协调服务,它能够帮助应用程序在分布式环境中实现一致性、可靠性和高可用性,在ZooKeeper中,数据被组织成一个树形…

    2024年6月13日
    01
  • 我来分享如何细化网站SEO优化的流程。

    众所周知,网站优化过程中策略和细节是非常重要的,作为站长我们要不断细化优化我们的seo流程,但是很多人在优化的过程中却不注意自己的优化方式,导致在策略或者流程上出现很多问题,那么,作为站长我们应该如何做…

    2023年6月27日
    00
  • 教你 企业淘宝开店流程是什么。

    淘宝作为国内主流的电商平台,入驻的商家成千上万,用户基数十分的庞大,成交额也是在全国排名第一,因此吸引了许多电商创业者想要入驻淘宝平台。相对于淘宝c店来说,淘宝企业店铺所获得的权益更多,更具有优势。那…

    2023年10月20日
    02

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息