Django项目开发实战
上QQ阅读APP看书,第一时间看更新

1.3 快速上手Django

Django是一个高级的Python Web框架,它鼓励快速开发干净、实用的设计。这个框架由经验丰富的开发人员构建,解决了Web开发过程中的大部分烦琐的事情。开发者使用Django可以专注于编写业务逻辑代码,而无须重复造轮子。

1.3.1 配置开发环境

首先,确保计算机已经安装Python和pip(Python包安装和管理工具),可通过执行下面的命令检查是否成功安装。

    $ python --version
    $ pip --version

本书使用的Python版本是2.7.15,操作系统版本是macOS 10.14.2(18C54),Django版本是1.8。

就像大多数现代编程语言一样,Python有自己独特的下载、存储和解析包的方式。默认情况下,系统上的每个项目使用相同的目录来存储和检索库。对于系统包来说,这不是什么大问题,但对于第三方库来说,其影响是很大的。

在现实的开发场景中,不同的项目依赖同一个库的不同版本是很常见的现象。这就是虚拟环境工具发挥作用的地方了。

从根本上来说,Python虚拟环境的主要目的是为Python项目创建一个独立的环境,即每个项目都可以拥有自己的依赖项。

下面为新项目创建一个虚拟环境。

首先安装virtualenv软件包,然后创建虚拟环境。代码如下:

    $ pip install virtualenv
    $ virtualenv quick-start

这样,一个全新的虚拟环境就创建好了。文件的目录结构大致如下:

创建完成后,激活虚拟环境。代码如下:

    $ source quick-start/bin/activate
    (quick-start) $

现在Shell(交互式的命令行工具)的提示框多了环境的名字(quick-start),提示当前已经进入了虚拟环境,在虚拟环境中安装的包只在当前环境中生效。

如果决定不再使用这个环境,则可以关闭它。关闭环境需要执行deactivate指令,执行指令后,提示框中环境的名字不再显示。代码如下:

    (quick-start) $ deactivate
    $

现在开始安装Django,这里选择Django 1.8版本,这是一个非常稳定的版本。命令行操作如下:

    (quick-start) $ pip install django==1.8
    Installing collected packages: django
    Successfully installed django-1.8

1.3.2 创建项目

上面已经设置好了开发环境,现在来创建一个名为quickstart的项目。Django自带的django-admin命令行工具,可以很方便地创建项目。

    (quick-start) $ django-admin startproject quickstart

创建项目的结构如下:

说明:

  • 最外层的quickstart只是一个名字,可以替换成其他的,对项目没有影响。
  • manage.py是一个命令行程序,允许用户以各种方式与此项目进行交互。
  • quickstart是项目的包名,引用这个项目的代码时需要用到。
  • quickstart/__init__.py是一个空文件,用于告诉Python这个目录应被视为一个包。
  • quickstart/settings.py是项目的配置文件,Django推荐用代码的方式来管理配置。
  • quickstart/urls.py是项目的URL声明,标明站点的“目录”。
  • quickstart/wsgi.py是使用WSGI部署服务的入口。

1.3.3 配置说明

上面创建的settings.py文件就是Django项目的配置文件。这个文件自身是一个Python的模块,因此不允许出现Python语法错误。可以使用Python语法来动态设置配置,也可以从其他文件中引入配置。

在使用Django的时候,一定要指定配置路径,指定方式是配置环境变量DJANGO_SETTINGS_MODULE。

settings.py文件可以为空,因为Django为每一个配置都设定了默认值。默认配置的代码路径在django/config/global_settings.py文件中。如果自定义的配置和默认的配置不同,则可以通过下面的命令看出差别:

    (quick-start) $ python manage.py diffsettings

在启动的时候,Django会先从global_settings.py中读取配置,然后在项目定义的settings.py文件中读取配置,根据需要覆盖全局配置。

可以在应用中读取配置对象,如下面的代码:

也可以在应用运行的时候修改配置对象(一般不推荐这样做),这个配置会立刻生效,如下面的代码:

    from django.conf import settings
    settings.DEBUG = True

1.3.4 创建应用

现在来创建第一个应用,同样使用admin工具创建应用,将新的应用取名为myapp。

    (quick-start) $ django-admin startapp myapp

经过短暂的等待,admin会创建一个包含了必要文件的应用。创建的应用文件夹结构如下:

说明:

  • admin.py用于定制应用的管理页面。
  • migrations文件夹用于模型出现修改时对应数据库的更改操作。
  • __init__.py是一个空文件,用于告诉Python这个目录应被视为一个包。
  • models.py用于存储应用的模型,即MVC中的M。
  • tests.py一般用来放单元测试的代码。
  • views.py用来放视图函数。

创建之后需要让Django知道应该使用它。打开文本编辑器,修改quickstart/settings.py,在INSTALLED_APPS中添加应用名。代码如下:

1.3.5 启动开发服务器

Django自带的命令行工具可用来启动开发服务器。使用runserver命令会启动一个HTTP服务器用于开发和调试:

    (quick-start) $ python manage.py runserver

该命令会产生一些输出:

出现以上输出,说明开发服务器已经启动了,这是一个Python编写的轻量级Web服务器。服务运行后,打开浏览器,访问链接http://127.0.0.1:8000,就能看到Welcome to Django的页面。需要指出的是,这个服务器只在开发的时候使用,不要在生产环境使用它。

实现runserver的代码路径为django/core/management/commands/runserver.py。

默认情况下,runserver命令启动的服务会监听内部IP的8000端口。可以传入参数改变服务绑定的IP和端口,例如:

    (quick-start) $ python manage.py runserver 0.0.0.0:8000

1.3.6 编写一个页面

现在编写第一个页面。打开myapp/views文件,在文件中写入几行简单的代码,这几行代码实现了一个简单的视图函数:

那么如何让Django知道怎么使用这个函数呢?Django提供了一个类似路由功能的对象——URLConf。我们先在myapp目录下创建一个名为urls.py的文件,然后在这个文件中写入下面的代码:

上面的文件放在myapp目录下,用来负责这个应用的路由。一个项目可能包含多个应用,因此比较好的是在项目级别页配置路由,这个配置用于将请求匹配分发到各个应用。现在来更改项目的路由配置,编辑quickstart/urls.py文件。代码如下:

重新启动runserver,在浏览器中打开链接http://127.0.0.1:8080/myapp,就能看到“你好,朋友!”这句话了。