本文转载自http://www.dannysite.com/blog/233/
基础环境
本文基于 Python3.5 及 Django 1.9 版本编写,这是到 2016 年 4 月初为止的最新版本。因此请确保系统中安装了对应版本的 Python 和 Django。至于如何安装,本文不再饶恕,可以参考相应的官方文档。
关于 Django 的 MVC 层
Django 紧紧地遵循 MVC 模式,可以称得上是一种 MVC 框架。 以下是 Django 中 M、V 和 C 各自的含义:
由于 C 由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),因此 Django 也被称为 MTV 框架。在 MTV 开发模式中:
这个模式在开发中至关重要,因此必须牢记在心并运用到实际开发过程中。
开始新的项目
要从何开始?这对于新手来说感觉是个世界大难题。不过因为我们是基于一个框架来开发的,因此其势必会帮助我们解决“如何开始”这个问题。在安装了 Django 之后,能够获得一个命令行工具 django-admin.py,其包含一个 startproject 能帮助我们快速创建一个全新的项目并做好最基本的配置。现在就来创建一个名叫 myblog 的项目:
django-admin.py startproject myblog
命令完成之后就会在当前目录下生成一个新的 myblog 目录,且包含如下文件:
正如之前所说的,Django 已为你做好了基本的配置,因此这个项目已是可运行的,接下来的工作就要交给上图中的 manage.py 来处理。进入 myblog 目录并执行:
python manage.py runserver
你会看到如下内容:
$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
March 28, 2016 - 23:39:18
Django version 1.9.4, using settings 'myblog.settings'
Starting development server athttp://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
由此可以看出当前服务会运行在 127.0.0.1 的 8000 端口上,这是 Django 开发服务器的默认行为。让我们打开浏览器看看目前为止的成效吧!
恭喜你!你的第一步已经做到了!这是 Django 的欢迎页面,表示一个全新的工程已经运行了起来。
连接数据库
接下来要解决的是准备工作的最后一项:连接数据库。我们要构建的是一个博客系统,显然其内容是动态的,因此必须连接到一个数据库来动态存取博客等数据。Django 原生支持多种数据库的连接,包括 SQLite、MySQL、PostgreSQL 等,最简单的要数 SQLite,这是一个基于本地文件的数据库,本文也以此为例。数据库的配置在 Django 全局的配置文件中:myblog/settings.py。其中可以发现以下配置段:
DATABASES = {
'default': {
'ENGINE':'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR,'db.sqlite3'),
}
}
DATABASES 配置是一个字典项,也就意味着可以配置多数据库。当然这里仅仅包含一个并放在“default”中,标明为默认数据库配置。这里的 ENGINE 指定的是使用 SQLite 作为 backend: django.db.backends.sqlite3;而 NAME 则指明数据库文件的位置,即当前运行目录下的 db.sqlite3。如果仔细观察的话,刚才在执行 runserver 命令的时候,Django 已经自动生成了该文件。不过即便如此,其中还可以算是未包含任何表数据。Django 自身会有一些依赖的数据表,因此有必要在这里将这些基础表创建出来,现在我们要依靠 manage.py 的 migrate 来做到这一点:
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, sessions, contenttypes
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying sessions.0001_initial... OK
到这里为止,一些最基础的工作就算完成了,接下来可以开始我们的简易博客系统之旅。
发现更多
探寻 django-admin.py 和 manage.py 的奥秘
之前,我们分别利用了 django-admin.py 和 manage.py 来创新新的项目以及运行开发服务器。这一切都是如此的简单,不过我们可不能就此停止。他们其中还隐藏着大量有用的东西值得去探索,而在接下来的文章中我们也会多次运用到 manage.py 来帮助我们完成一些所需的工作。因此建议大家可以通过阅读官方文档等方式来了解更多有关 django-admin.py 和 manage.py 的故事。
一个意想不到的站点管理
Django 非常人性化的一点就是内置了一个站点管理工具。并且在最新的 Django 中,这个站点管理工具是默认开启的。你可以尝试通过 /admin/ 路径来访问他(如果没有对数据库做初始化同步,访问这个页面会报错)。如果可能,尝试通过官方文档等途径提前了解一下他,并尝试执行创建超级管理员账户及利用该账户登录到后台等操作来进行一次初步的体验。这在之后会使用到。
用 IDE 工具帮助提高开发效率
当进入到真正的实践环节或者开发工作中的时候,一个工程会包含众多的文件和目录层次,并且各文件之间或多或少会有依赖性存在。因此在这种时候,找寻一个合适的 IDE 工具会帮助我们大大提高工作效率,并对整个工程有一个更好的全局把控。PyCharm 也许是个不错的选择,没有接触过的朋友可以去尝试一下。