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

54

我真的很想建立一个网络应用程序;可能是一些简单的东西,比如口袋妖怪卡牌的数据库?

我听说Django非常出色。最好的起点在哪里呢?


4
http://gettingstartedwithdjango.com/en/lessons/introduction-and-launch/ - Soner Gönül
http://tutorial.djangogirls.org/en/ - Rafaf Tahsin
我强烈推荐Tuts+的Django Unchained课程(https://code.tutsplus.com/courses/django-unchained),这是我最喜欢的Django入门课程,你可以通过构建一个HN克隆来学习基础知识。另外,我想自荐一下,我建了一个网站(http://webacademy.io/django-tutorials/),收集了最好的Web开发学习资源,你可以在那里找到其他好的Django教程。有趣的是,这个网站本身就是基于我从Django Unchained课程中学到的东西构建的 =) - lumenwrites
http://wadoss.com/blog/how-become-python-django-developer-from-scratch/ - Iqbal
8个回答

78

这是我在博客上发布的帖子,几乎回答了与相同问题。它包含了在此处已经给出的许多答案,以及一些额外的建议,其中一些是我的个人意见,其他人可能与我不同意见。希望有人会觉得有用:

先动手做点什么

我能给出的最好建议就是从构建一些东西开始。一个 Django 的典型“Hello world”示例是一个博客网站,我还建议从那里开始。Django 框架试图使常见任务变得非常容易和简单,具有简单博客功能的网站是一个典型的示例。熟练的 Django 开发者可以使用所有可用的库在不到一个小时的时间内编写出一个简单的博客网站,因此这是一个很好的起点,可以让您了解 Django 如何处理事情的感觉。

Django 书籍

当然,在您可以直接跳进代码并开始编码之前,您需要使用 Django 将系统设置起来,并学习基础知识。一个很棒的资源是Django 书籍。由于 Django 变化颇大,它的作者已经有一段时间没有更新或保持相当最新了,但它仍然可以在网上免费获得,因此非常受推荐。请阅读前几章,以了解如何设置您的系统,如何将 Django 的所有部分组合成 MVC 模型,并惊叹于 Django 是如此简单而其他框架则使事情变得不必要繁琐。

Django 教程和文档

Django 网站上有很多优秀的教程,一旦您掌握了 Django 的基础知识,您几乎不需要其他东西。文档也非常棒,欢迎自行查看。

选择 Django 版本

对于初学者,选择一个 Django 版本并坚持使用它是个好主意。在撰写本文时,由大多数人使用的主要版本为 Django 1.2 和 Django 1.3,以及开发版本(在发布为主要版本之前,Django 开发人员会在其中工作并测试更改)。刚开始时不要使用开发版本-您肯定会遇到麻烦。

重要的是 Django 已经存在了大约四五年,您在 Google 上找到的许多教程都是面向 Django 1.0 和 1.1 的。虽然这没有太大问题,但自那以后 Django 添加了很多功能,使得大多数那些教程和代码片段已过时。尽可能选择针对您版本的教程。

选择一个版本后,请确保始终阅读正确版本的Django文档。您将在右侧边栏和当前页面的网址中看到可以更改所查看版本的选项。Django的文档真正卓越,超越了所有其他文档,并且作者非常注重特别说明哪些功能是该版本的新功能,哪些功能已过时。请确保您知道这一点,以免浪费数小时尝试使某些不可用于您的版本的内容工作。

了解DRY的含义并实践它

DRY:“不要重复自己”是Django背后的核心原则之一。如果您发现在Django中复制粘贴任何内容,几乎肯定有更好的方法来处理它。大多数程序员会根据经验知道为什么像那样的重复是不好的,但简而言之,如果代码中的某些内容稍后需要更改或者如果您在某个地方犯了错误,则只需要在一个地方进行更改即可。这很有用,因为如果还有多个位置需要更改,而您忘记了那种情况,那么您就会在代码中引入错误和漏洞。

远离基于类的视图

Django 1.3的新补充是一整套基于类的通用视图。如果您不知道这意味着什么,不要担心。关于Django的大多数教程和书籍都不会提到它,主要是因为它太新了。这是一个旨在减少创建视图中重复性的功能,从而遵循DRY原则。虽然它确实在某种程度上做到了这一点,但它也引入了许多黑魔法,并需要频繁地在Django源代码中查找内容。对于初学者来说,这不是理想的选择。此外,基于类的视图现在提供的错误消息经常指向完全错误的方向。远离它们,最好从最初使用功能视图开始,就像大多数教程所告诉您的那样。当您对Django更加熟悉并发现功能视图的重复性令人沮丧时,请尝试使用基于类的通用视图。

不要从Google App Engine开始托管

虽然GAE对于可扩展的Django应用程序来说是免费且很棒,但它也会对您的登录过程引入许多限制,而且相关文档非常稀少。作为初学者,不要从这条路开始,因为很多正常的Django文档会突然不适用,而您将不知道该怎么做。相反,请从像 epio, gondor.io, 或 其他许多服务 开始。Ep.io目前仍处于测试阶段,但也提供了免费的主机选项(每月使用量有一定限制)。由两位Django核心开发人员开发,我强烈推荐使用他们- 这类似于Ruby on Rails的Heroku。 Ep.io即将关闭,但Heroku最近也添加了 Python 主机选项

使用StackOverflow并提问

我最后的建议是,在遇到问题时利用StackOverflow。首先,他们已经回答了几乎您能想到的任何问题。如果您在网站上找不到问题的答案,一种查找解决方案的好方法是将“stackoverflow”作为Google搜索词的一部分。否则,请发布一个问题,让Django社区帮助您。在过去的几年中,它已被证明是我学习Django黑暗面最好的资源之一,除了实际阅读Django代码(您也应该这样做!)。祝好运,并享受!


4
想要补充一下,PythonAnywhere是一个很好的起点,适合想要托管Django应用程序的初学者。绝对非常棒,我不是他们的公关人员。我已经使用他们的免费账户托管了一个小博客一段时间了,我觉得它相当不错。 - Games Brainiac
只是想知道它是否仍然适用于Google App Engine? - rd22

14

通过阅读Django教程,建立你的第一个Django Web应用程序。


2
我不同意。这个教程对于初学者来说有很多详细的内容,但是它分章节(模型、视图等)的方法并不足够激发人心。相反,我建议采用像“与 Django 跳探戈”这样的整体案例研究,从头到尾跟踪整个项目。 - stelios

9

17
该书现在相当过时。 - Marcin
我同意。我不会推荐使用1.0版本,但2.0版本仍然有一个很好的 Django 入门介绍。虽然从1.0到1.3.1有很多变化,但这本书仍然有助于解释 Django 的基本概念(模型-模板-视图等)。 - Garrett Hyde
Django的问题在于它总是有迭代更新,而书籍无法跟上这些变化。现在,在Django 1.8及以上版本中,我们拥有了Django Channels。更不用说Django Rest Framework,那里面有各种各样的迭代更新。如果你没有耐心去从网络上零散的信息中拼凑出完整的知识点,那么最好的方法就是在论坛上交流,并利用结构化课程(例如这个)来学习。 - Timothy Mugayi

8

建造一些东西。 任何东西。 保持相对简单和简短,但开始构建它并确保你完成构建它。 你心中所想的项目可能是完美的。

当然,阅读文档和书籍非常有帮助,但像任何编程语言一样,真正学习Django的唯一方法就是通过实践。 构建有形的东西几乎是获得这种实践的唯一途径。


7

如果你不懂Python,请先学习这门语言。人们往往会在尝试学习一个框架却不了解其编程语言时变得非常沮丧。


2

在掌握Django/Python的基础知识后,开始阅读Django by Examples,这是一些非常好的文章。


0
你可以尝试学习《4小时学会Django - 快速入门教程》。
如果想要快速入门Django,请参考以下内容:

http://slash4.de/blog/learn-django-in-4-hours

本课程旨在让您尽快入门Django(无需安装程序等)。它展示了Django的所有最重要的部分 - 当然,无法在4小时内涵盖Django的所有方面,但这不是本课程的目的。


AWS C9 不再免费。 - prashanth manohar

0

以下的屏幕录像/教程是一个不错的方式,可以让你从零开始创建一个Wiki:

之后,你可以通过优秀的Django文档网站上提供的教程和文档来进一步学习。


链接已损坏:http://showmedo.com/videotutorials/video?name=1100000 - RandallShanePhD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接