基于AbstractBaseUser重新定义用户模型
Django的设计哲学
学好一门武功,心法很重要。
学Django也是一样,要学好Django,首先要认可Django的设计哲学,如果对Django不认可,肯定是学不好的。
Django设计哲学:
-
松耦合:降低耦合度同时加强聚合度。
例如:
1)模板系统不需要知道用户的 Web 请求,数据库层不需要了解如果显示数据,而视图并不关心程序员所使用的模板系统。
2)Django 应用中的 URL 不应该与底层 Python 代码耦合。将 URL 与 Python 函数名联系起来是一件很糟糕且丑陋的做法。(Flask说:你是在说我吗?=_=)
- 视图不应该关心开发人员使用哪种模板——甚至根本不用模板系统。
-
更少的代码
Django应用的代码应该尽可能地精简。
例如:缓存应该尽可能快。因此,围绕缓存后端的所有框架代码都应该保持在绝对的最小值,特别是对于“get()”操作。
-
快速开发
Django 可以做到快速的 Web 开发。
-
不要重复地造轮子 (DRY)
每个独特的概念或数据片应该存在且只存在于一个地方。避免冗余,做好标准化。
-
明确优于隐式
字段不应该仅仅根据字段的名称来假定某些行为。这需要对系统有太多了解,并且容易出现错误。相反,其行为应该基于关键字参数,并且在某些情况下,应该基于字段的类型
-
一致性
框架应在所有层级上保持一致。一致性适用于从低级(Python 的编码风格)到高级(使用 Django 的“经验”)的所有内容。
缓存API应该为不同的缓存后端提供一致的接口。
-
从 HTML 中解耦
模板系统不应该被设计成只能输出 HTML。它应该同样擅长