通过 Djaong 编写的每个应用都是由 Python 包组成的,这些包存放在你的 Python path 中并且遵循一定的命名规范。
Django 提供了个实用工具可以自动生成一个应用的基本目录架构,因此你可以专注于编写代码而不是去创建目录。
#项目 ( Projects ) vs. 应用 ( apps )
项目与应用之间有什么不同之处?应用是一个提供功能的 Web 应用 – 例如:一个博客系统、一个公共记录的数据库或者一个简单的投票系统。 项目是针对一个特定的 Web 网站相关的配置和其应用的组合。一个项目可以包含多个应用。一个应用可以在多个项目中使用。
应用可以存放在 Python path 中的任何位置。在本教材中,将通过 manage.py 文件创建我们的应用,以便它可以作为顶层模块导入,而不是作为 项目 的子模块。
项目创建
现在正式开始吧, 我们创建一个名为my_blog的Django项目
创建项目的指令如下:
$ django-admin.py startproject my_blog
看一下整个项目的文件结构
$ tree my_blog #打印树形文件结构
my_blog
├── manage.py
└── my_blog
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 directory, 5 files
这些文件是:
外层 my_blog/ 目录只是你项目的一个容器。对于 Django 来说该目录名并不重要; 你可以重命名为你喜欢的。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。 你可以在 django-admin.py and manage.py 中查看关于 manage.py 所有的细节。
内层 my_blog/ 目录是你项目中的实际 Python 包。该目录名就是 Python 包名,通过它你可以导入它里面的任何东西。 (e.g. import mysite.settings).
my_blog/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。(如果你是 Python 新手,请查看官方文档了解 关于包的更多内容 。)
my_blog/settings.py: 该 Django 项目的设置/配置。请查看 Django settings 将会告诉你如何设置。
my_blog/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站“目录”。请查看 URL dispatcher 可以获取更多有关 URL 的信息。
my_blog/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。请查看 How to deploy with WSGI 获取更多细节。
#建立Django app
建立一个名为 article 的app
$ python manage.py startapp article
重新看一下整个项目的结构
── article
│ ├── __init__.py
│ ├── admin.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── db.sqlite3
├── manage.py
├── my_blog
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-34.pyc
│ ├── settings.cpython-34.pyc
│ ├── urls.cpython-34.pyc
│ └── wsgi.cpython-34.pyc
├── settings.py
├── urls.py
└── wsgi.py
创建appp后,需要在工程的文件夹下的setting.py文件中(my_blog/my_blog/setting.py)下添加新建app:
INSTALLED_APPS = (
...
'article', #这里填写的是app的名称
)
#运行程序
启动web应用:
$ python manage.py runserver #启动Django中的开发服务器
#如果运行上面命令出现以下提示
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
#请先使用下面命令
python manage.py migrate
#输出如下信息
Operations to perform:
Apply all migrations: contenttypes, sessions, admin, auth
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying sessions.0001_initial... OK
运行成功后,会显示如下信息:
#重新运行启动Django中的开发服务器
$ python manage.py runserver
#运行成功显示如下信息
System check identified no issues (0 silenced).
December 21, 2014 - 08:56:00
Django version 1.7.1, using settings 'my_blog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
现在可以启动浏览器, 输入http://127.0.0.1:8000/, 出现
这里启动了 Django 开发服务器,一个纯粹的由 Python 编写的轻量级 Web 服务器。
我们在 Django 内包含了这个服务器,这样你就可以迅速开发了,在产品投入使用之前不必去配置一台生产环境下的服务器 – 例如 Apache 。
现在是一个很好的提示时机:不要 在任何类似生产环境中使用此服务器。它仅适用于开发环境。
(我们提供的是 Web 框架的业务,而不是 Web 服务器。)
#更改端口号 默认情况下,runserver 命令启动的开发服务器只监听本地 IP 的 8000 端口。
如果你想改变服务器的端口,把它作为一个命令行参数传递即可。例如以下命令启动的服务器将监听 8080 端口:
python manage.py runserver 8080
如果你想改变服务器 IP ,把它和端口号一起传递即可。因此,要监听所有公共 IP 地址(如果你想在其他电脑上炫耀你的工作),请使用:
python manage.py runserver 0.0.0.0:8000
有关开发服务器的完整文档可以在 runserver 内参考。
命令梳理:
python manage.py <command> [options] #Django Command python manange.py -h帮助文档
django-admin.py startproject my_blog #创建项目
python manage.py startapp article #创建app