为什么写这篇教程
- 国内学习Django的新人越来越多,由于没有好的教程,许多人学习不得要领,对Django产生了错误的理解
- 使用Django已经多年,想做些事情回馈社区
- 目前没有看到特别好的中文教程,如果有,也就不需要再多写一篇了
- 现有的文档和教程不是为初学者设计的
- 如果照着那些一上来就教你怎么做一个博客的教程来学,就像是学习围棋只知道定式,或者像看论文只看结论,而不看证明过程。初学者需要了解的是how it works而不是how to use it
适合哪些人
- 有一定编程基础,希望学习Django掌握网站开发技能的新手
- 已经使用Django一段时间,希望更加深入的了解Django的原理以及实战技巧的Django用户
如何学习
- 本文主要是引导初学者一步一步的理解Django的设计思路,对于Django各个部分的介绍已经有很好的文档了,将会大量引用
- 阅读引用的文档
- 阅读引用的源码
- 当你不明白为什么的时候,读源代码
由于大部分内容是个人经验的总结,如有错误和不准确的地方,还请各位高人指正
-
网站开发基础
虽然是一篇Django的教程,考虑到大部分学习Django的朋友对于网站开发并没有深入理解,这里先讲一些基础知识
许多朋友学习Django不得要领也是因为缺少基础知识的支撑,
网站开发历史
HTML & HTTP
HTTP Server
basehttpserver
静态网页
Simplehttpserver
apache
CGI
CGIHTTPServer
WSGI
wsgiref
-
史上最烂Web框架
urldispatcher and function
-
如果用Django来实现会是什么样子的
urls.py and views.py
-
配置文件
settings
-
按照app来组织代码
MVT模型
-
跟数据库通讯
models.py
-
表单处理
forms.py
-
更好的生成页面
templates templatetags
-
middleware
-
contrib apps
auth
admin
staticfiles
-
用正确的方法来组织网站源代码
python package
-
第三方package
djangorestframework
south
-
测试
-
部署
nginx
gunicorn
postgres
fabric
-
advanced topics
long polling
websocket
tornado
mongrel2
========================分割线========================
补一句,其实最好的学习方式还是读源代码。读Django的源代码,读好的第三方package的源代码。然后模仿和借鉴。当看的多了,就能够分辨好坏了。