安装Django
开始使用Django需要做两件非常重要的事情:
- 安装Django(显然);
- 了解模型 - 视图 - 控制器(MVC)设计模式。
第一个,安装Django,在本章的第一部分非常简单和详细。 第二个是同样重要的,特别是如果你是一个新的程序员,或者来自使用一种编程语言,而不是将你的网站背后的数据和逻辑与显示方式分开。
Django的哲学基于松散耦合,这是MVC的基础哲学。 我们将在更详细的讨论中讨论松耦合和MVC,但是如果您对MVC不太了解,那么您最好不要跳过本章的后半部分,因为理解MVC将使理解Django变得更容易。
安装Django
在开始学习如何使用Django之前,您必须先在您的计算机上安装一些软件。幸运的是,这只是一个简单的三步过程:
- 安装Python。
- 安装一个Python虚拟环境。
- 安装Django。如果这听起来不太熟悉,那么不用担心,在本章中,我假定你从未从命令行安装过软件,并且会一步一步地引导你完成。
我已经为运行Windows的用户编写了这部分内容。虽然Django有强大的Lunix和OSX用户群,大多数新用户都在Windows上。如果您使用的是Mac或Linux,则Internet上有大量资源;最好的地方是开始Django自己的安装说明。
对于Windows用户,您的计算机可以运行任何最新版本的Windows(7,8.1或10)。本章还假定您正在台式机或笔记本电脑上安装Django,并将使用开发服务器和SQLite来运行本书中的所有示例代码。
当你第一次启动时,这将是迄今为止最简单,最好的方式来设置Django。如果您想要进行更高级的Django安装,您的选择将在第13章 - 部署Django,第20章 - 关于安装Django和第21章 - 高级数据库管理的更多内容中介绍。
如果您使用的是Windows,我建议您尝试使用Visual Studio来处理所有的Django开发。微软在为Python和Django程序员提供支持方面做出了重大投资。这包括对Python / Django的全面IntelliSense支持,以及将所有Django的命令行工具整合到VS IDE中。
最重要的是它完全免费。
我知道,谁会想到从M $ ??,但这是真的!
有关Visual Studio Community 2015的完整安装指南,请参阅附录G,以及有关在Windows中开发Django的一些提示。
更新2017年5月:如果您在Windows中进行繁重的开发,我仍然认为VS是一个不错的选择,但MS自从第一次写入VS之后发布了VS代码编辑器。我发现我现在使用VS Code进行编辑。我不介意使用命令行来运行,VS Code在我的PC,Mac和Linux机器上运行得非常好。因人而异。
当我看到附录G时,我会考虑是否更新VS Code的建议。由于附录G非常受欢迎,我很可能会将其从本书中删除,并在djangobook.com上提供免费教程。
安装Python
Django本身是用Python编写的,所以安装框架的第一步是确保你已经安装了Python。
Python版本
Django 1.11 LTS与Python版本2.7,3.4,3.5和3.6一起工作。 对于每个版本的Python,只有最新的微版本(A.B.C)才能正式得到支持,尽管从经验来看,任何最近的版本都能正常工作。
本书中的所有代码示例都是为Python 3编写的。
我没有提供用Python 2编写的代码示例。它不仅增加了初学者的困惑,而且Django 1.11 LTS将成为支持Python 2的Django的最后一个版本。
您可能会听到一些生锈的个人的不同意见,但是除非您有足够的理由使用Python 2(例如,旧版库),否则Python 3是一种可行的方法。
安装
如果你在Linux或Mac OS X上,你可能已经安装了Python。 在你的终端中键入python,如果你看到类似于下面的内容,那么安装Python:
Python 2.7.10 (default, Feb 6 2017, 23:53:20)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)]
on darwin
Type "help", "copyright", "credits" or "license" for more
information.
>>>
你可以看到,在上面的例子中,Python交互模式正在运行Python 2.7。 这是没有经验的用户的陷阱。 在Linux和Mac OS X机器上,安装Python 2和Python 3是很常见的。 如果你的系统是这样的话,你需要在所有的命令前面输入python3,而不是python来运行带有Python 3的Django。
假设您的系统中没有安装Python,请转至https://www.python.org/downloads/并单击“下载Python 3.x.x”的大黄色按钮。 在编写本文时,Python的最新版本是3.6.1,但是在阅读本文时可能已更新,因此这些数字可能会略有不同。
正如我之前所说,不要下载2.7.x版本,因为这是旧版本的Python。 本书中的所有代码都是用Python 3编写的,所以如果您尝试在Python 2上运行代码,将会遇到编译错误。
一旦你下载了Python安装程序,进入你的Downloads文件夹,双击文件“python-3.x.x.msi”来运行安装程序。安装过程与任何其他Windows程序相同,所以如果您之前安装了软件,这里应该没有问题,但是您必须做出一个非常重要的定制。
默认情况下,Python可执行文件不会被添加到Windows PATH语句中。 为了使Django正常工作,Python必须在PATH语句中列出。 幸运的是,这很容易纠正 - 当Python安装程序屏幕打开时,请确保在安装前检查“添加Python 3.6到PATH”(图1-1)。 image.png不要忘了下一步,因为它将解决在Windows中pythonpath(Python安装的一个重要变量)的错误映射导致的大多数问题。
图1-1:在安装之前选中“将Python 3.6添加到PATH”框。
一旦安装了Python,你应该能够重新打开命令窗口,并在命令提示符下键入python,得到如下所示:
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
您可能需要重新启动Windows才能使其工作。 当你在这时,还有一件更重要的事要做。 退出Python,然后在命令提示符处输入以下命令:
python -m pip install -U pip
这个命令将打印一条信息,说明pip是最新的,或者给出类似于这样的输出:
C:\Users\nigel>python -m pip install -U pip
Collecting pip
Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB)
100% |################################| 1.2MB 198kB/s
Installing collected packages: pip
Found existing installation: pip 7.1.2
Uninstalling pip-7.1.2:
Successfully uninstalled pip-7.1.2
Successfully installed pip-8.1.2
你不需要明确地知道这个命令现在做什么; 简单地说,pip就是Python包管理器。 它用来安装Python包--pip实际上是“Pip安装包”的递归首字母缩略词。 Pip对于我们安装过程的下一个阶段非常重要,但首先我们需要确保我们正在运行最新版本的pip,这正是这个命令所做的。
安装Python虚拟环境
如果你打算使用Microsoft Visual Studio(VS),那么你可以在这里停下来跳到附录G. VS只要求你安装Python,其他所有的东西都是从集成开发环境(IDE)里面为你做的。
计算机上的所有软件都是相互独立运行的 - 每个程序都有其他一些软件,它们依赖于(称为依赖关系)和设置,以便找到需要运行的文件和其他软件(调用环境变量)。
在编写新的软件程序时,可能(也是常见的)修改其他软件所依赖的依赖关系和环境变量。 这会造成很多问题,所以应该避免。
Python虚拟环境通过将新软件所需的所有依赖项和环境变量包装到与计算机上其余软件不同的文件系统中来解决此问题。
一些在看在线教程的人会注意到,这一步通常被描述为可选的。 这不是我支持的观点,Django的核心开发人员也不支持这种观点。在虚拟环境中开发Python应用程序(其中Django是其中之一)的优势是显而易见的,不值得在此处通过。 作为一个初学者,你只需要听取我的意见 - 为Django开发运行虚拟环境不是可选的。
Python中的虚拟环境工具叫做virtualenv,我们使用pip从命令行安装它:
pip install virtualenv
你的命令窗口的输出应该如下所示(您的版本号可能不同):
C:\Users\nigel>pip install virtualenv
Collecting virtualenv
Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
100% |################################| 1.8MB 323kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
创建一个项目目录
在我们创建Django项目之前,我们首先需要创建一个项目目录。 项目目录可以在计算机上的任何位置,但强烈建议您在用户目录的某个位置创建项目目录,这样以后就不会再有权限问题了。 在Windows中您的文件夹的好地方是您的我的文档文件夹。
在你的系统上创建一个新的文件夹,我已经调用了文件夹mysite_project,但是你可以给这个文件夹任何一个对你有意义的名字。
下一步,您需要进入命令窗口(Linux和OS X上的终端)。 在Windows上最简单的方法是打开Windows资源管理器,按住Shift键并右键单击文件夹以获取上下文菜单,然后单击“在此打开命令窗口”(图1-2)。 图1-2:按住shift键并右键单击文件夹以打开命令窗口.png如果您正在运行较新版本的Windows 10,则旧的命令提示符已被PowerShell取代。 对于本书中的示例,旧终端和PowerShell在功能上是相同的,所有命令都将在PowerShell中未经修改的情况下运行。
一旦你创建了项目文件夹,你就需要在刚刚打开的命令提示符处输入virtualenv env_mysite来为项目创建一个虚拟环境:
C:\Users\nigel\OneDrive\Documents\mysite_project> virtualenv env_mysite
再次,虚拟环境的名称并不重要,您可以更改名称以适应。 在我的系统上,这个命令的输出如下所示:
Using base prefix 'c:\\users\\nigel\\appdata\\local\\programs\\python\\python36-32'
New python executable in C:\Users\nigel\OneDrive\Documents\mysite_project\env_mysite\Scripts\python.exe
Installing setuptools, pip, wheel...done.
一旦virtualenv完成设置新的虚拟环境,打开Windows资源管理器,并看看为您创建了什么样的virtualenv。 在您的项目目录中,您现在将看到一个名为\ env_mysite的文件夹(或您为虚拟环境提供的任何名称)。 如果您打开文件夹,您将看到以下内容:
\Include
\Lib
\Scripts
pip-selfcheck.json
如果您查看\ Lib文件夹,您会看到virtualenv已经为您创建了一个完整的Python安装,与您的其他软件分开,因此您可以在不影响系统上的任何其他软件的情况下处理您的项目。
Internet上的大多数示例都使用“env”作为环境名称。 这不好; 主要是因为安装几个虚拟环境来测试不同的配置是很常见的,“env”不是很具描述性。 例如,您可能正在开发一个必须在Python 2.7和Python 3.6上运行的应用程序。 名为“env \ _someapp \ _python27”和“env \ _someapp \ _python36”的环境将比你命名为“env”和“env1”更容易区分。
要使用这个新的Python虚拟环境,我们必须激活它,所以让我们回到命令提示符并键入以下内容:
env_mysite\scripts\activate
这将在虚拟环境的\ scripts文件夹中运行激活脚本。 你会注意到你的命令提示已经改变了:
(env_mysite) C:\Users\Nigel\OneDrive\Documents\mysite_project>
命令提示符开始处的(env_mysite)让您知道您正在虚拟环境中运行。 我们下一步是安装Django。
安装Django
现在我们有了Python并运行着一个虚拟环境,安装Django非常简单,只需输入命令:
pip install django==1.11.2
这将指示pip将Django安装到您的虚拟环境中。 你的命令输出应该如下所示:
(env_mysite) C:\Users\nigel\OneDrive\Documents\mysite_project> pip install django==1.11.2
Collecting django==1.11.2
Using cached Django-1.11.2-py2.py3-none-any.whl
Collecting pytz (from django==1.11)
Using cached pytz-2017.2-py2.py3-none-any.whl
Installing collected packages: pytz, django
Successfully installed django-1.11.2 pytz-2017.2
在这种情况下,我们正在明确告诉pip安装Django 1.11.2,这是当前Django 1.11 LTS的最新版本。 如果您正在安装Django,最好检查Django Project网站以获取最新版本的Django 1.11 LTS。
另外请注意我的电脑不需要下载任何东西,因为我今天安装了另外一个虚拟环境,Windows使用了缓存版本。
最后,请注意,Django 1.11需要Python时区包(pytz),所以pip也会将其安装在您的虚拟环境中。
如果你想知道,输入pip install django将安装Django的最新稳定版本。 如果您需要安装Django最新开发版本的信息,请参阅第20章。
对于某些安装后的正面反馈,花一点时间来测试安装是否正常工作。 在您的虚拟环境命令提示符处,通过键入python并敲入回车来启动Python交互式解释器。 如果安装成功,你应该可以导入模块django:
(env_mysite) C:\Users\nigel\OneDrive\Documents\mysite_project> python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.get_version()
'1.11'
>>>
开始一个项目
一旦你安装了Python,你可以通过创建一个项目来开发一个Django应用程序的第一步。 项目是Django实例的一个设置集合。 如果这是你第一次使用Django,你将不得不照顾一些初始设置。
也就是说,您需要自动生成一些代码来建立一个Django项目。 自动生成的代码包含一个Django实例的设置集合,包括数据库配置,Django特定的选项和特定于应用程序的设置。
我假设在这个阶段,你仍然在运行从以前的安装步骤的虚拟环境。 如果没有,你将不得不使用env_mysite \ scripts \ activate \来重新启动它。 还要确保你在mysite_project目录下。
从您的虚拟环境命令行运行以下命令:
django-admin startproject mysite
这个命令会自动在你的项目目录中创建一个mysite目录,以及一个基本的,但功能齐全的Django网站的所有必要的文件。
警告! 您需要避免在内置Python或Django组件之后命名项目。 特别是,这意味着你应该避免使用像“Django”(这将与Django本身冲突)或“测试”(与内置Python包冲突)等名称。
我们来看看startproject创建的内容:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这些文件是:
- 外面的mysite /根目录。这只是你的项目的一个容器。它的名字与Django无关;你可以把它重命名为任何你喜欢的东西。
- manage.py。一个命令行实用程序,可让您以各种方式与您的Django项目进行交互。您可以阅读关于Django Project网站上的manage.py的所有详细信息。
- 内部mysite /目录。这是你的项目的Python包。这是你用来导入任何东西的名字(例如mysite.urls)。
- mysite/ __ init__.py。一个空文件告诉Python这个目录应该被认为是一个Python包。 (如果你是一个Python初学者,请阅读官方Python文档中有关软件包的更多信息)。
- mysite/ settings.py。这个Django项目的设置/配置。附录D会告诉你有关设置如何工作的所有信息。
- mysite/ urls.py。这个Django项目的URL声明; Django支持的站点的“目录”。您可以在第2章和第7章中阅读更多关于URL的内容。
- mysite/ wsgi.py。 WSGI兼容的Web服务器为您的项目提供服务的入口点。更多细节见第13章。
设置数据库
Django默认包含许多应用程序(例如管理程序和用户管理和认证)。 其中一些应用程序至少使用一个数据库表,所以我们需要在数据库中创建表,然后才能使用它们。 为此,请转到上一步中创建的mysite文件夹(在命令提示符处键入cd mysite)并运行以下命令:
python manage.py migrate
migrate命令根据startproject命令创建的设置文件(本书稍后的设置文件中的更多内容)创建新的SQLite数据库和任何必需的数据库表。 如果一切按计划进行,您将看到适用于每种迁移的消息:
(env_mysite) C:\Users\Nigel\OneDrive\Documents\mysite_project\mysite>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
### several more migrations (not shown)
安装和配置数据库不是初学者的任务 - 幸运的是,Django自动安装和配置SQLite,没有任何输入,所以我们将在本书中使用SQLite。 如果您想使用PostgreSQL,MySQL或Oracle等“大型”数据库引擎,请参阅第21章。
开发服务器
让我们验证你的Django项目的作品。 如果您还没有更改到外部mysite目录,并运行以下命令:
python manage.py runserver
您将在命令行上看到以下输出:
Performing system checks...
System check identified no issues (0 silenced).
May 16, 2017 - 16:48:29
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
您已经开始使用Django开发服务器,这是一个纯粹用Python编写的轻量级Web服务器。 Django的创建者在Django中包含了这个功能,所以您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好生产。
现在是值得注意的时候了:不要使用类似于生产环境的任何东西。 它仅用于开发时使用。 现在服务器正在运行,请使用Web浏览器访问http://127.0.0.1:8000/。 你会看到一个愉快的淡蓝色的“Welcome to Django”页面(图1-3)。 它工作起来啦! 图1-3:Django的欢迎页面.pngrunserver的自动重新加载开发服务器根据需要自动为每个请求重新加载Python代码。 您不需要重新启动服务器以使代码更改生效。 但是,添加文件等一些操作不会触发重新启动,因此在这种情况下您必须重新启动服务器。