Project and apps

2021-11-02 17:58 更新

Project and apps

每一个 Django project 裡面可以有多个 Django app,可以想成是类似模组的概念。在实务上,通常会依功能分成不同 app,方便未来的维护和重複使用。

例如,我们要做一个类似 Facebook 这种网站时,依功能可能会有以下 App:

  • 使用者管理 -- accounts
  • 好友管理 -- friends
  • 涂鸦墙管理 -- timeline
  • 动态消息管理 -- news

若未来我们需要写个购物网站,而需要会员功能时,accounts app (使用者管理) 就可以被重複使用。

这一章,你会学到如何使用 Django 命令列工具建立 Django project 和一个 Django app。

建立 Django project

建立专案资料夹 -- startproject

首先,使用 django-admin.py 来建立第一个 Django project mysite:

django-admin.py startproject mysite

此时会多了一个 mysite 资料夹,我们切换进去

cd mysite

startproject 这个 Django 指令除了建立专案资料夹,也预设会建立一些常用档案,你可以使用 lsdir /w (Windows) 检视档案结构。

目前 project 的档案结构如下:

mysite/
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

瞭解 Django Command

manage.py是 Django 提供的命令列工具,我们可以利用它执行很多工作,例如同步资料库、建立 app 等等,指令的使用方式如下:

python manage.py <command> [options]

如果你想要了解有什麽指令可以使用,输入help-h指令会列出所有指令列表:

python manage.py -h

而如果想了解其中一个指令,可以在指令名字后输入-h,你会看到简单的的指令介绍以及用法说明,以runserver为例:

(VENV) ~/djangogirls/mysite$ python manage.py runserver -h
Usage: manage.py runserver [options] [optional port number, or ipaddr:port]

Starts a lightweight Web server for development and also serves static files.

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath=PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Raise on exception
  --no-color            Don't colorize the command output.
  -6, --ipv6            Tells Django to use an IPv6 address.
  --nothreading         Tells Django to NOT use threading.
  --noreload            Tells Django to NOT use the auto-reloader.
  --nostatic            Tells Django to NOT automatically serve static files
                        at STATIC_URL.
  --insecure            Allows serving static files even if DEBUG is False.
  --version             show program's version number and exit
  -h, --help            show this help message and exit

启动开发服务器 -- runserver

从说明中可以知道,runserver会启动一个简单的 web server,方便于在开发阶段使用:

(VENV) ~/djangogirls/mysite$ python manage.py runserver
...
Django version 1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

现在打开浏览器输入 http://127.0.0.1:8000/ 或是 http://localhost:8000/ 会看到你的 django 专案已成功在 web server 上执行

Django startproject success

最后我们可以按下 CTRL+C ,关闭 web server 回到命令列。

如果无法看到成功画面,浏览器上显示错误讯息 - "A server error occurred. Please contact the administrator.",请输入:

(VENV) ~/djangogirls/mysite$ python manage.py migrate

然后再次runserver启动你的 web server,我们会在 Django Models 解释migrate的作用。

建立 Django application (app)

现在,让我们利用 startapp 建立第一个 Django app -- trips:

python manage.py startapp trips

startapp会按照你的命名建立一个同名资料夹和 app 预设的档案结构如下:

trips
├── __init__.py
├── admin.py
├── migrations
├── models.py
├── tests.py
└── views.py

将新增的 Django app 加入设定档

在前一个指令,我们透过 Django 命令列工具建立了 trips 这个 app。但若要让 Django 知道要管理哪些 app,还需再调整设定档。

新增 app

打开 mysite/settings.py,找到 INSTALLED_APPS,调整如下:

# mysite/settings.py

...

# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'trips',
)

请注意 app 之间有时候需要特定先后顺序。在此,我们将自订的trips加在最后面。

预设安装的 Django app

Django 已将常用的 app 设定为 INSTALLED_APPS 。例如,auth (使用者认证)、admin (管理后台) ...等等,我们可依需求自行增减。

小结

目前为止,我们使用 startproject 建立了一个名为 mysite 的 django 专案,和一个名为 trips 的 django app

mysite
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── trips
│   ├── __init__.py
│   ├── admin.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── manage.py

最后,我们回顾一下本章学到的指令

指令 说明
django-admin.py **startproject**<project_name> 建立 django 专案
python manage.py **-h**<command_name> 查看 django command 的使用方法
python manage.py runserver 启动开发伺服器
python manage.py **startapp**<app_name> 新增 django app
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号