我从 django 学到了什么?

接触 django 已经一年半了,其间使用 django 实现了三个上线项目,并且完成了 《django by example》一书的四个项目。在这里稍作总结。

为什么选择 django ?


由于之前四五年的时间里一直在使用 python 做数据分析和系统优化的工作,因此,当需要展示这些工作时选择 python 的 web框架成了及其自然的事情。那么,python 的 web 框架有很多,为什么选择 django 呢?

其实最初原因只有两个:

  1. django 的文档完备,官网的快速入门例子以及可以直接使用的 admin 应用。这使得 django 的入门门槛非常低。

  2. django 源码结构清晰,遇到问题可以很轻松的找到源码进行分析。

django 架构


web 框架的功能简单来说是接收网络请求并作出相应的响应。django 通过中间件对请求和响应进行了处理。处理必须使用的中间件,django 内置许多可选的中间件,此外,我们还可以开发自己的中间件来满足项目的特殊需求。


middleware.png

上图中的 view 部分是需要开发者完成的,具体实现时需要完成模型、视图和模板的开发。

模型


模型创建

django 内置模型基类以及覆盖大多数字段的字段类,因此,使用 django 创建模型只需继承模型基类并且设置相应字段即可。当然,还可以很方便的定义一对一、一对多和多对多的关系。

Django 还支持模型继承,提供抽象模型、多表模型、代理模型。模型继承工作方式与 Python 的标准类继承相似。

django 还提供 contenttype 来更加灵活地建立某一字段与不同模型的关系。

模型使用

django 的模型默认包含名为 objects 的管理器,可以很方便的使用 模型名称.objects 对数据库中对应的数据表进行操作。

如果需要获取内容直接使用.objects.filter() 得到 QuerySet 即可。QuerySet 功能非常强大,而且比使用 sqlalchemy 获取数据库中的数据操作更加简单。

ModelForm 可以使用表单操作模型

django 提供 ModelForm 可以很简单的建立表单并将表单数据保存到模型中。

内置处理模型的类视图

django 提供 DetailView、LIstView 可以很容易的获取模型中的单条、多条记录。
django 还提供 CreateView、UpdateView、DeleteView 来操作模型内容。
我们实现视图时可以通过继承相应的积累快速实现功能。

视图


提供权限类的通用视图

django 内置一整套权限应用,我们可以直接拿来使用,当然,如果模板与自己网站风格不同,在相应位置设置模板即可。

内置大量的类视图

django 内置大量的类视图,我们创建视图时可以通过继承相应的类视图简化开发工作。

模板


django 提供了大量的标签和过滤器,可以直接使用。此外,我们还可以自己创建自定义标签和过滤器。

django 的优点


django 的优点可以总结为以下几点:

  1. 内置 admin,后台管理非常简单;

  2. 内置权限应用,权限处理非常简单(但是不能设置单条记录的权限,django 的 rest 框架可以实现)。

  3. 模型 querysets 功能非常强大,可以非常简单的获取数据库中的数据。

  4. 内置大量类视图,视图开发非常简单。

  5. 表单处理非常方便。

从《 django by example 》学到了什么?

《 django by example 》通过四个项目不仅讲解了 django 的使用方法,还包含许多 django 以外的知识,比如 JavaScript、redis、Celery、RESTful API 等。

除了具体知识,这本书使用的编程哲学也非常好,印象最深刻的在于 PDF的实现方法。

Python 包含很多生成 PDF文件的库文件,比较受欢迎的是 Reportlab ,Reportlab 需要为 PDF 文件添加自定义样式和格式,使得生成 PDF 的成本非常高。曾经用了半天的时间了解这个库,但是由于免费版开发非常复杂,收费版太贵而放弃。

《 django by example》巧妙的回避了这个问题,采用渲染 HTML 模板然后使用 WeasyPrint 将其转换为 PDF 的方法,这样使 Python 远离了表示层 。深深的体会了一把各司其职的好处。

学了 django 下一步学习什么?

django rest 框架。可以先从这里处理了解一下它的强大功能。然后慢慢学起...

对于一个做数据分析和系统优化的工作的人来说,学习 django 似乎是无用之功,但是这个旅程真的非常美妙...

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容