Project and apps

2021-11-02 17:58 更新

Project and apps

每一個(gè) Django project 裡面可以有多個(gè) Django app,可以想成是類似模組的概念。在實(shí)務(wù)上,通常會(huì)依功能分成不同 app,方便未來(lái)的維護(hù)和重複使用。

例如,我們要做一個(gè)類似 Facebook 這種網(wǎng)站時(shí),依功能可能會(huì)有以下 App:

  • 使用者管理 -- accounts
  • 好友管理 -- friends
  • 涂鴉墻管理 -- timeline
  • 動(dòng)態(tài)消息管理 -- news

若未來(lái)我們需要寫個(gè)購(gòu)物網(wǎng)站,而需要會(huì)員功能時(shí),accounts app (使用者管理) 就可以被重複使用。

這一章,你會(huì)學(xué)到如何使用 Django 命令列工具建立 Django project 和一個(gè) Django app。

建立 Django project

建立專案資料夾 -- startproject

首先,使用 django-admin.py 來(lái)建立第一個(gè) Django project mysite:

django-admin.py startproject mysite

此時(shí)會(huì)多了一個(gè) mysite 資料夾,我們切換進(jìn)去

cd mysite

startproject 這個(gè) Django 指令除了建立專案資料夾,也預(yù)設(shè)會(huì)建立一些常用檔案,你可以使用 lsdir /w (Windows) 檢視檔案結(jié)構(gòu)。

目前 project 的檔案結(jié)構(gòu)如下:

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

瞭解 Django Command

manage.py是 Django 提供的命令列工具,我們可以利用它執(zhí)行很多工作,例如同步資料庫(kù)、建立 app 等等,指令的使用方式如下:

python manage.py <command> [options]

如果你想要了解有什麼指令可以使用,輸入help-h指令會(huì)列出所有指令列表:

python manage.py -h

而如果想了解其中一個(gè)指令,可以在指令名字后輸入-h,你會(huì)看到簡(jiǎn)單的的指令介紹以及用法說(shuō)明,以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

啟動(dòng)開發(fā)服務(wù)器 -- runserver

從說(shuō)明中可以知道,runserver會(huì)啟動(dòng)一個(gè)簡(jiǎn)單的 web server,方便于在開發(fā)階段使用:

(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.

現(xiàn)在打開瀏覽器輸入 http://127.0.0.1:8000/ 或是 http://localhost:8000/ 會(huì)看到你的 django 專案已成功在 web server 上執(zhí)行

Django startproject success

最后我們可以按下 CTRL+C ,關(guān)閉 web server 回到命令列。

如果無(wú)法看到成功畫面,瀏覽器上顯示錯(cuò)誤訊息 - "A server error occurred. Please contact the administrator.",請(qǐng)輸入:

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

然后再次runserver啟動(dòng)你的 web server,我們會(huì)在 Django Models 解釋migrate的作用。

建立 Django application (app)

現(xiàn)在,讓我們利用 startapp 建立第一個(gè) Django app -- trips:

python manage.py startapp trips

startapp會(huì)按照你的命名建立一個(gè)同名資料夾和 app 預(yù)設(shè)的檔案結(jié)構(gòu)如下:

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

將新增的 Django app 加入設(shè)定檔

在前一個(gè)指令,我們透過(guò) Django 命令列工具建立了 trips 這個(gè) app。但若要讓 Django 知道要管理哪些 app,還需再調(diào)整設(shè)定檔。

新增 app

打開 mysite/settings.py,找到 INSTALLED_APPS,調(diào)整如下:

# 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',
)

請(qǐng)注意 app 之間有時(shí)候需要特定先后順序。在此,我們將自訂的trips加在最后面。

預(yù)設(shè)安裝的 Django app

Django 已將常用的 app 設(shè)定為 INSTALLED_APPS 。例如,auth (使用者認(rèn)證)、admin (管理后臺(tái)) ...等等,我們可依需求自行增減。

小結(jié)

目前為止,我們使用 startproject 建立了一個(gè)名為 mysite 的 django 專案,和一個(gè)名為 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

最后,我們回顧一下本章學(xué)到的指令

指令 說(shuō)明
django-admin.py **startproject**<project_name> 建立 django 專案
python manage.py **-h**<command_name> 查看 django command 的使用方法
python manage.py runserver 啟動(dòng)開發(fā)伺服器
python manage.py **startapp**<app_name> 新增 django app
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)