一、为什么选择Django
在Python的众多Web框架中,Django一家独大,它的文档最完善、市场占有率最高、招聘职位最多。不管是出于学习还是应用的目的,Django都值得研究。
飞龙的《浅谈Python Web框架》对Python的各个Web框架有很好的分析比较。
二、为什么学习Django By Example
初学Django,官方的入门教程《The Django Book》自然是首选。该教程循序渐进、条理清晰、简单易懂,坚持一路学习下来,会让初学者对Django有个良好的基本认识。然而为了便于讲解,教程中的例子都很简单,涉及的知识点也不够全面深入。
如何才能更好地学习Django呢?[How I Learnt enough Python/Django to be Dangerous in 1 Month] 和 [Learning Django by example]都推荐了Django By Example。
Django By Example提供了几个既实用又稍具规模的Django实例,是非常好的提升Django功力的素材,更为重要的是:你可以用Django做点有意思的东西了!
相关资源:
1. 教程:《Django By Example》
2. 源码:dbe.tar.gz
三、Django实例
本文《Django实例》是研究Django By Example(简称DBE)的学习笔记。
四、源码结构
下载并解压dbe.tar.gz后,DBE源码的目录结构如下:
dbe/
mcbv/ (共享1:Django标准class-based view的修改版本,添加了一些额外的功能)
shared/ (共享2:一些有用的函数和类)
templates/ (共享3:Template模板)
media/ (共享4:css布局、js代码、img图片等)
blog/ (实例1:博客)
bombquiz/ (实例2:炸弹竞猜)
forum/ (实例3:论坛)
issues/ (实例4:问题跟踪)
portfolio/ (实例5:相册)
questionnaire/ (实例6:调查问卷)
五、准备工作
1. 创建一个Django工程
在Linux终端输入以下命令:
$ cd /home/russellluo/Django
$ django-admin.py startproject dbe
dbe工程的目录结构如下:
dbe/
manage.py
dbe/
__init__.py
settings.py
urls.py
wsgi.py
2. 将DBE源码加入dbe工程
由于DBE源码自成一体,源码中普遍采用 "from dbe.xx.yy import zz" 的方式来 "导入自身定义模块dbe/xx/yy.py中的符号zz",例如:
# dbe/blog/models.py
from django.db.models import * from django.contrib.auth.models import User from django.contrib import admin from django.core.mail import send_mail from dbe.shared.utils import * # 此处导入dbe/shared/utils.py模块中的所有符号 notify = False class Post(BaseModel): title = CharField(max_length=60) # 其余代码:略
为了不改变DBE源码中的import语句,就需要将DBE源码主目录dbe(与dbe工程主目录同名,但二者相互独立)下的所有子目录,拷贝到dbe工程主目录下的dbe子目录中。修改后dbe工程的目录结构如下:
dbe/
manage.py
dbe/
__init__.py
settings.py
urls.py
wsgi.py
mcbv/
shared/
templates/
media/
blog/
bombquiz/
forum/
issues/
portfolio/
questionnaire/
这样一来,"from dbe.shared.utils import *"语句就能成功找到"dbe/shared/utils.py"文件,并导入该模块中的所有符号了。