Python Django入门(建立项目)

在本章中,你将学习如何使用

Django(http://djangoproject.com/ )来开发一个名为"学习笔记"(Learning Log)的项目,这是一个在线日志系统,让你能够记录所学习的有关特定主题的知识。

我们将为这个项目制定规范,然后为应用程序使用的数据定义模型。我们将使用Django的管理系统来输入一些初始数据,再学习编写视图和模板,让Django能够为我们

的网站创建网页。

Django是一个Web框架 ------一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让你更轻松地读写数据库、管理用户等。

建立项目

建立项目时,首先需要以规范的方式对项目进行描述,再建立虚拟环境,以便在其中创建项目。

制定规范

完整的规范详细说明了项目的目标,阐述了项目的功能,并讨论了项目的外观和用户界面。与任何良好的项目规划和商业计划书一样,规范应突出重点,帮助避免项目偏离轨

道。这里不会制定完整的项目规划,而只列出一些明确的目标,以突出开发的重点。我们制定的规范如下:

我们要编写一个名为"学习笔记"的Web应用程序,让用户能够记录感兴趣的主题,并在学习每个主题的过程中添加日志条目。"学习笔记"的主页对这个网站进行描述,

并邀请用户注册或登录。用户登录后,就可创建新主题、添加新条目以及阅读既有的条目。

学习新的主题时,记录学到的知识可帮助跟踪和复习这些知识。优秀的应用程序让这个记录过程简单易行。

建立虚拟环境

要使用Django,首先需要建立一个虚拟工作环境。虚拟环境 是系统的一个位置,你可以在其中安装包,并将其与其他Python包隔离。将项目的库与其他项目分离是有益的,且为

了在第20章将"学习笔记"部署到服务器,这也是必须的。

为项目新建一个目录,将其命名为learning_log,再在终端中切换到这个目录,并创建一个虚拟环境。如果你使用的是Python 3,可使用如下命令来创建虚拟环境:

复制代码
learning_log$ python -m venv ll_env
learning_log$

这里运行了模块venv ,并使用它来创建一个名为ll_env的虚拟环境.

安装virtualenv

如果你使用的是较早的Python版本,或者系统没有正确地设置,不能使用模块venv ,可安装virtualenv包。为此,可执行如下命令:

复制代码
$ pip install --user virtualenv

别忘了,对于这个命令,你可能需要使用稍微不同的版本.

注意  如果你使用的是Linux系统,且上面的做法不管用,可使用系统的包管理器来安装virtualenv。例如,要在Ubuntu系统中安装virtualenv,可使用命令sudo aptget

install python-virtualenv 。

在终端中切换到目录learning_log,并像下面这样创建一个虚拟环境:

复制代码
learning_log$ virtualenv ll_env
New python executable in ll_env/bin/python
Installing setuptools, pip...done.
learning_log$

注意  如果你的系统安装了多个Python版本,需要指定virtualenv使用的版本。例如,命令virtualenv ll_env --python=python3 创建一个使用Python 3的虚拟

环境。

激活虚拟环境

建立虚拟环境后,需要使用下面的命令激活它:

复制代码
learning_log$ source ll_env/bin/activate
❶ (ll_env)learning_log$

这个命令运行ll_env/bin中的脚本activate。环境处于活动状态时,环境名将包含在括号内,如❶处所示。在这种情况下,你可以在环境中安装包,并使用已安装的包。你在ll_env中安

装的包仅在该环境处于活动状态时才可用。

注意  如果你使用的是Windows系统,请使用命令ll_env\Scripts\activate (不包含source )来激活这个虚拟环境。

要停止使用虚拟环境,可执行命令deactivate :

复制代码
(ll_env)learning_log$ deactivate
learning_log$

如果关闭运行虚拟环境的终端,虚拟环境也将不再处于活动状态。

安装Django

创建并激活虚拟环境后,就可安装Django了:

复制代码
(ll_env)learning_log$ pip install Django
Installing collected packages: Django
Successfully installed Django
Cleaning up...
(ll_env)learning_log$

由于我们是在虚拟环境中工作,因此在所有的系统中,安装Django的命令都相同:不需要指定标志--user ,也无需使用python -m pip install package_name 这样较

长的命令。

别忘了,Django仅在虚拟环境处于活动状态时才可用。

在Django中创建项目

在依然处于活动的虚拟环境的情况下(ll_env包含在括号内),执行如下命令来新建一个项目:

复制代码
❶ (ll_env)learning_log$ django-admin.py startproject learning_log .
❷ (ll_env)learning_log$ ls
learning_log ll_env manage.py
❸ (ll_env)learning_log$ ls learning_log
__init__.py settings.py urls.py wsgi.py

❶处的命令让Django新建一个名为learning_log的项目。这个命令末尾的句点让新项目使用合适的目录结构,这样开发完成后可轻松地将应用程序部署到服务器。
注意  千万别忘了这个句点,否则部署应用程序时将遭遇一些配置问题。如果忘记了这个句点,就将创建的文件和文件夹删除(ll_env除外),再重新运行这个命令。

在❸处,运行了命令ls (在Windows系统上应为dir ),结果表明Django新建了一个名为learning_log的目录。它还创建了一个名为manage.py的文件,这是一个简单的程序,它接受

命令并将其交给Django的相关部分去运行。我们将使用这些命令来管理诸如使用数据库和运行服务器等任务。

目录learning_log包含4个文件(见❸),其中最重要的是settings.pyurls.py和wsgi.py。文件settings.py指定Django如何与你的系统交互以及如何管理项目。在开发项目的过程中,我们

将修改其中一些设置,并添加一些设置。文件urls.py告诉Django应创建哪些网页来响应浏览器请求。文件wsgi.py帮助Django提供它创建的文件,这个文件名是web server gateway

interface(Web服务器网关接口 )的首字母缩写。

创建数据库

Django将大部分与项目相关的信息都存储在数据库中,因此我们需要创建一个供Django使用的数据库。为给项目"学习笔记"创建数据库,请在处于活动虚拟环境中的情况下执行下

面的命令:

复制代码
(ll_env)learning_log$ python manage.py migrate
❶ Operations to perform:
Synchronize unmigrated apps: messages, staticfiles
Apply all migrations: contenttypes, sessions, auth, admin
--snip--
Applying sessions.0001_initial... OK
❷ (ll_env)learning_log$ ls
db.sqlite3 learning_log ll_env manage.py

我们将修改数据库称为迁移 数据库。首次执行命令migrate 时,将让Django确保数据库与项目的当前状态匹配。在使用SQLite(后面将更详细地介绍)的新项目中首次执行这个

命令时,Django将新建一个数据库。在❶处,Django指出它将创建必要的数据库表,用于存储我们将在这个项目(Synchronize unmigrated apps,同步未迁移的应用程序 )中使用的

信息,再确保数据库结构与当前代码(Apply all migrations,应用所有的迁移 )匹配。

在❷处,我们运行了命令ls ,其输出表明Django又创建了一个文件------db.sqlite3。SQLite是一种使用单个文件的数据库,是编写简单应用程序的理想选择,因为它让你不用太关

注数据库管理的问题。

查看项目

下面来核实Django是否正确地创建了项目。为此,可执行命令runserver ,如下所示:

复制代码
(ll_env)learning_log$ python manage.py runserver
Performing system checks...
❶ System check identified no issues (0 silenced).
July 15, 2015 - 06:23:51
❷ Django version 1.8.4, using settings 'learning_log.settings'
❸ Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Django启动一个服务器,让你能够查看系统中的项目,了解它们的工作情况。当你在浏览器中输入URL以请求网页时,该Django服务器将进行响应:生成合适的网页,并将其发送

给浏览器。

在❶处,Django通过检查确认正确地创建了项目;在❷处,它指出了使用的Django版本以及当前使用的设置文件的名称;在❸处,它指出了项目的URL。URL http://127.0.0.1:8000/

表明项目将在你的计算机(即localhost)的端口8000上侦听请求。localhost是一种只处理当前系统发出的请求,而不允许其他任何人查看你正在开发的网页的服务器。

现在打开一款Web浏览器,并输入URL:http://localhost:8000/;如果这不管用,请输入http://127.0.0.1:8000/。你将看到类似于图18-1所示的页面,这个页面是Django创建的,让你知道

到目前为止一切正常。现在暂时不要关闭这个服务器。若要关闭这个服务器,按Ctrl + C即可。

注意  如果出现错误消息"That port is already in use"(指定端口已被占用),请执行命令python manage.py runserver 8001 ,让Diango使用另一个端口;如果

这个端口也不可用,请不断执行上述命令,并逐渐增大其中的端口号,直到找到可用的端口。

相关推荐
ππ记录8 分钟前
python3.13.2安装详细步骤(附安装包)
linux·开发语言·python·python3.13.2安装·python 3.13.2下载·python3.13.2·python 3.13.2
九不多18 分钟前
多阶段构建实现 Docker 加速与体积减小:含文件查看、上传及拷贝功能的 FastAPI 应用镜像构建
python·yolo·docker·fastapi
程序员yt23 分钟前
西交建筑学本科秋天毕业想转码,自学了Python+408,华为OD社招还是考研更香?
python·考研·华为od
张同学吧1 小时前
使用FastAPI为知识库问答系统前端提供后端功能接口
python·fastapi
梓羽玩Python1 小时前
3天内猛涨2.6k+ Star!LangManus:用自然语言操控全网数据,复杂任务一键执行
人工智能·python·github
Firmin1234561 小时前
在树莓派上如何使用 Vosk检测唤醒词
python
MiyamiKK571 小时前
leetcode_双指针 11. 盛最多水的容器
python·算法·leetcode·职场和发展
带娃的IT创业者2 小时前
《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成
python·ci/cd·github
Kaede62 小时前
如何从CentOS 7升级到8?CentOS 8最新安装教程
linux·python·centos