建立 django 工程
万事已经具备了,让我们来建立我们的 django 工程。 django 工程(project)是我们项目代码的容器。例如我们博客项目中所有的代码(包括 django 为我们自动生成的以及我们自己写的)都包含在这个工程里,说白了就是用一个文件夹包起来的一系列 Python 代码文件和 django 配置文件。但我们不必去亲自动手新建这个文件夹和代码文件,django 的命令帮我们做了这些事情。例如我把博客项目工程的代码放在 C:\Users\yangxg\Workspace ,工程名我把它叫做 blogproject ,那么首先在命令行工具进入 C:\Users\yangxg\Workspace 这个目录(如果你还停留在 Python 的命令栏里,先多按几次
ctrl + c
跳出来):
(blogproject_env) C:\WINDOWS\system32>cd C:\Users\yangxg\Workspace
然后运行如下命令:
(blogproject_env) C:\Users\yangxg\Workspace>django-admin startproject blogproject
再次申明一定要在虚拟环境下运行这些命令,虚拟环境的标志就是命令提示符前有 (blogproject_env) 这样的标记。以后所有的和 django 有关的命令都是在虚拟环境下运行,因此在运行前一定确保先开启了虚拟环境。
进入工程所在目录 C:\Users\yangxg\Workspace(你可能设置在其他路径),你会发现多了一个名为 blogproject 的文件夹,其内部文件结构如下:
blogproject /
manage.py
blogproject /
__init__.py
settings.py
urls.py
wsgi.py
最顶层的 blogproject/ 目录是我们刚刚指定的工程目录,其下面有一个 manage.py 文件,manage 是管理的意思,顾名思义 manage.py 就是 django 为我们生成的管理我们这个项目的 Python 脚本文件,以后用到时会再次介绍。与 manage.py 同级的还有一个名为 blogproject 的文件夹,这里面存放了一些 django 的配置文件,例如 settings.py 等等,以后用到时会详细介绍。此外,其下面的 __init__.py 指明了这是一个 Python 模块包。Python 规定在一个文件夹里包含 __init__.py 文件来指明这是一个 Python 模块包,这样你就可以在别的 Python 代码中引入它。
Hello django
网站需要运行在一个 web 服务器上,django 已经为我们提供了一个用于本地开发的 web 服务器。在命令行工具里进入到 manage.py 所在目录,运行下面的命令就可以在本机上开启一个 web 服务器:
(blogproject_env) C:\Users\yangxg\Workspace>cd C:\Users\yangxg\Workspace\blogproject
(blogproject_env) C:\Users\yangxg\Workspace\blogproject>python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 21, 2016 - 20:23:07
Django version 1.10.4, using settings 'blogproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
看到这样的信息表明我们的服务器开启成功,在浏览器输入
http://127.0.0.1:8000/
,看到如下的页面提示信息:
> # It worked!
>
> ## Congratulations on your first Django-powered page.
>
> Of course, you haven't actually done any work yet. Next, start your first app by running `python manage.py startapp [app_label]`.