Django的开发服务的搭建和使用

时间:2022-10-04 05:09:03

创建一个项目

如果这是你第一次使用Django,你需要完成一些初始化操作。 即,你需要自己用代码来创建一个Django项目 ——一个Django实例所需的设置集合,包括数据库的配置、Django的配置选项和应用的配置选项。

在命令行(终端)中,cd(例如cd exam)到你想要用来保存代码的目录,然后运行如下命令:

$ django-admin startproject mysite

这将会在你的当前目录下生成一个 mysite目录。如果它不能正常工作,请查看运行django-admin遇到的问题

注意

你给项目命名时要避免与Python或Django的内建组件同名。 特别地,你应该避免使用类似django(与Django自身冲突)或test(与Python内建的包冲突)这样的名称。

代码应该存在哪里?

如果你的背景是普通的旧式的PHP(没有使用过现代的框架),你可能习惯于将代码放在Web服务器的文档根目录下(例如/var/www)。使用Django,你不需要这么做。 将Python代码放在你的Web服务器的根目录不是个好主意,因为它可能会产生让人们在网上看到你的代码的风险。 这样不安全。

将你的代码放置在Web服务器根目录以外的地方,例如/home/mycode

让我们看一下startproject生成了什么:

mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py

这些文件是:

  • 外层的mysite/根目录仅仅是项目的一个容器。它的命名对Django无关紧要;你可以把它重新命名为任何你喜欢的名字。
  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。 你可以在django-admin和manage.py中读到关于manage.py的所有细节。
  • 内层的mysite/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如mysite.urls)。
  • mysite/__init__.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。 (如果你是一个Python初学者,关于包的更多内容请阅读Python的官方文档)。
  • mysite/settings.py:该Django 项目的设置/配置。Django 设置 将告诉你这些设置如何工作。
  • mysite/urls.py:该Django项目的URL声明;你的Django站点的“目录”。 你可以在URL 路由器 中阅读到关于URL的更多内容。
  • mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。 更多细节请参见如何利用WSGI进行部署

数据库的建立

现在,编辑mysite/settings.py。它是一个普通的Python模块,带有模块级别的变量,用来表示Django的配置。

默认情况下,该配置使用SQLite。如果你是数据库初学者,或者你仅仅是想要试用一下Django,它是最简单的选择。 SQLite包含在Python中,所以你不需要另外安装其他任何东西来支持你的数据库。 然而,当你开始第一个真正的项目时,你可能想使用一个更健壮的数据库比如PostgreSQL来避免在未来遇到令人头疼的数据库切换问题。

如果你希望使用另外一种数据库,请安装合适的database binding,并在 DATABASES 'default'条目中修改以下的配置以匹配你的数据库连接的设置:

  • ENGINE – 'django.db.backends.sqlite3''django.db.backends.postgresql_psycopg2','django.db.backends.mysql''django.db.backends.oracle'。其它的后台也可以支持
  • NAME –  数据库的名称。如果你使用SQLite,数据库将是你计算机上的一个文件; 如果是这样的话,NAME应该是这个文件的绝对路径,包括文件名。默认值是os.path.join(BASE_DIR, 'db.sqlite3'),它将文件保存在你项目的目录中。

当你的项目使用SQLite之外的其他数据库引擎时,就必须添加USER、 PASSWORDHOST等额外的设置。 更多的细节,请参见DATABASES的参考文档。

如果你使用PostgreSQL或者MySQL,确保到此你已经建立好一个数据库。 可以在你的数据库的交互式提示命令下,使用“CREATEDATABASE database_name;”创建它。

如果你使用SQLite,你不需要事先创建任何东西 —— 数据库文件将会在需要的时候自动创建。

当你编辑mysite/settings.py时,请设置TIME_ZONE为你自己的时区。

另外,请注意文件顶端的INSTALLED_APPS设置。它保存这个Django实例中激活的所有的Django应用的名字。 应用可以使用在多个项目中,而且你可以将这些应用打包和分发给其他人在他们的项目中使用。

默认情况下,INSTALLED_APPS包含下面的应用,它们都是Django 与生俱来的:

这些应用,默认包含在Django中,以方便通用场合下使用。

然而上面的部分应用至少需要使用一个数据库表,因此我们需要在使用它们之前先在数据库中创建相应的表。要做到这一点,请运行以下命令:

$ python manage.py migrate

migrate查看INSTALLED_APPS设置并根据mysite/settings.py文件中的数据库设置创建任何必要的数据库表,数据库的迁移还会跟踪应用的变化(我们稍后会讲到)。你会看到对每次迁移有一条信息。如果你有兴趣,可以运行你的数据库的命令行客户端并输入dt (PostgreSQL), SHOW TABLES; (MySQL)或.schema (SQLite)来显示Django创建的表。

极简主义者

就像我们上面说到的,以上包含的默认应用用于常见的场景,但并不是每个人都需要它们。 如果你不需要它们中的任何一个或所有应用,可以在运行migrate之前从INSTALLED_APPS中*地注释或删除相应的行。migrate 命令将只为INSTALLED_APPS中的应用运行数据库的迁移。

开发服务器

让我们验证一下你的Django项目是否工作。 如果你没在外层的mysite目录下,那么进入这个目录,然后运行以下命令:

$ python manage.py runserver

你将看到命令行下输出了以下内容:

Performing system checks...

0 errors found
May 13, 2015 - 15:50:53
Django version 1.8, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

这表明你已经启动了Django开发服务器,一个用纯Python写的轻量级Web服务器。 我们在Django中内置了它,这样你就可以在不配置用于生产环境的服务器 —— 例如Apache —— 的情况下快速开发出产品,直到你准备好上生产环境。

现在是个很好的时机来说明这一点:不要在任何类似于生产环境的环境下使用这个服务器。 它仅仅是用于在开发中使用。(我们的重点是编写Web框架,非Web服务器。)

既然服务器已经运行,请用你的浏览器访问 http://127.0.0.1:8000/。在淡蓝色背景下,你将看到一个“Welcome to Django”的页面。它运行成功了!

更改端口

默认情况下,runserver命令在内部IP的8000端口启动开发服务器。

如果你想改变服务器的端口,把要使用的端口作为一个命令行参数传递给它。 例如,这个命令在8080端口启动服务器:

$ python manage.py runserver 8080

如果你想改变服务器的IP地址,把IP地址和端口号放到一起。 因此若要监听所有的外网IP,请使用(如果你想在另外一台电脑上展示你的工作,会非常有用):

$ python manage.py runserver 0.0.0.0:8000

开发服务器的所有文档可以在runserver的参考手册中找到。

runserver的自动重载

开发服务器会根据需要自动重新载入Python代码。 你不必为了使更改的代码生效而重启服务器。 然而,一些行为比如添加文件,不会触发服务器的重启,所以在这种情况下你需要手动重启服务器。

相关文章