学习Django的最佳方法是什么?

54 投票
8 回答
78872 浏览
提问于 2025-04-16 06:16

我真的很想做一个网页应用程序;比如说,简单一点的,可能是一个宝可梦卡片的数据库?

我听说Django非常不错。那我应该从哪里开始呢?

8 个回答

9

可以看看这本Django书

14

通过阅读Django教程,来搭建你的第一个Django网页应用。

78

这是我在博客上写的一篇文章,回答了几乎相同的问题。里面包含了很多已经在这里给出的答案,还有一些额外的建议,有些是我的个人观点,其他人可能会有不同的看法。希望对某些人有帮助:

动手做点东西

我能给出的最好建议就是从动手做点东西开始。对于Django来说,一个典型的“你好,世界”项目就是一个博客网站,我也推荐从这个开始。Django框架的设计就是为了让常见的任务变得非常简单,带有基本博客功能的网站就是一个典型的例子。一个熟练的Django开发者可以在不到一个小时的时间里,利用现有的库编写出一个简单的博客网站,因此这是一个很好的起点,可以让你感受一下Django的工作方式。

Django书籍

当然,在你开始编码之前,你需要先把系统配置好,安装Django,并学习一些基础知识。一个很好的资源是Django书籍。虽然作者已经有一段时间没有更新了(因为Django更新得很快),但这本书在网上是免费的,强烈推荐。先读几章,了解如何设置系统,Django的各个部分是如何组合成MVC模型的,看看Django是如何简单地处理事情的,而其他框架则显得繁琐。

Django教程和文档

Django官网上有很多很棒的教程,一旦你掌握了Django的基础知识,几乎不需要其他资源。文档也非常出色,自己去看看吧。

选择一个Django版本

对于初学者来说,选择一个Django版本并坚持使用是个好主意。在写这篇文章时,主要有两个版本被大多数人使用,分别是Django 1.2和Django 1.3,还有一个开发版本(这是Django开发者在发布正式版本之前测试和修改的版本)。初学时不要使用开发版本——那样你肯定会遇到麻烦。

Django已经存在大约四五年了,很多你在网上找到的教程都是针对Django 1.0和1.1的。这没问题,但Django自那时起增加了很多功能,使得那些教程和代码片段变得过时。尽量选择针对你所用版本的教程。

一旦选择了版本,确保你总是阅读正确版本的Django文档。你可以在页面右侧的边栏和网址中看到可以更改查看的版本。Django的文档非常优秀,远超其他资源,作者会特别说明哪些功能是该版本的新特性,哪些在后续版本中被弃用。确保你了解这些,以免浪费大量时间去尝试在你所用版本中不存在的功能。

了解DRY的含义,并加以实践

DRY:“不要重复自己”是Django的核心原则之一。如果你发现自己在Django中复制粘贴代码,几乎可以肯定有更好的方法来实现。大多数程序员都知道重复代码的坏处,简单来说,如果你代码中的某个部分需要更改,或者你在某处犯了错误,你只需在一个地方进行更改。这很有用,因为如果有多个地方需要更改,而你忘记了其中一个,就会引入错误和bug。

避免使用基于类的视图

Django 1.3新增了一系列基于类的通用视图。如果你不知道这是什么意思,没关系。绝大多数关于Django的教程和书籍都不会提到它,主要是因为它太新了。这个功能旨在减少创建视图时的重复,从而遵循DRY原则。虽然它在某种程度上确实做到了这一点,但也引入了很多复杂的内容,需要频繁查看Django源代码以了解发生了什么。对于初学者来说,这并不是理想的选择。此外,目前基于类的视图的错误信息往往会引导你走向错误的方向。初学时最好避免使用它们,而是使用功能视图,正如大多数教程所建议的那样。当你对Django有了更多了解,觉得功能视图的重复性令人沮丧时,再去了解基于类的通用视图。

不要一开始就选择在Google App Engine上托管

虽然GAE是免费的,适合可扩展的Django应用,但它也对你的登录过程有很多限制,相关文档非常稀缺。作为初学者,不要选择这条路,因为很多正常的Django文档突然就不适用了,你会不知道该怎么办。相反,可以选择像gondor.io其他许多服务Epio仍在测试阶段,但也有免费的托管选项(每月使用量有限制)。由两位Django核心开发者开发,我强烈推荐使用它们——这与Ruby on Rails的Heroku相当。虽然Ep.io要关闭,但Heroku最近也增加了Python托管选项

利用StackOverflow,提问

最后一个建议是,每当你遇到困难时,利用StackOverflow。首先,他们几乎已经有了你能想到的任何问题的答案。如果你在网站上找不到,可以在谷歌搜索时加上“stackoverflow”作为关键词。否则,发个问题,让Django社区来帮助你。在过去几年里,这已经成为我学习Django更复杂部分的最大资源,除了亲自阅读Django代码(你也应该这样做!)。祝你好运,享受学习过程!

撰写回答