【Django实例】序言

一、为什么选择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"文件,并导入该模块中的所有符号了。

原文地址:https://www.cnblogs.com/russellluo/p/3137425.html