Django 工程目錄結構設計

2021-08-19 09:32:20 字數 1872 閱讀 1395

概述

最近在做阿里雲市場api產品,我們使用django做後端服務,由於產品較多,後端工程管理需要有較為科學的管理,發現多數django工程非常混亂,不幸的是預設的django工程布局並沒有對此有任何幫助,它過於簡單對工程的管理導致在處理大的工程時帶來很多維護性問題。

本文將幫助讓你的工程有個合理的布局。致力於:

遵循最佳實踐

讓你的工程盡可能地直觀--你(作為開發者)可以立即認出**每個部分的作用

讓你工程仍然保持規範隨著你的工程中的應用越來越多。

讓你工程在不同環境下部署更加方便

讓其他程式設計師喜歡你的**

具體步驟

這部分我將和你一起開始乙個新的專案。過程中,你需要將你的專案目錄結構調整為下面描述的布局。

本文描述了高維護性結構分明的django專案布局的最佳實踐。

基礎- 預設的django專案

在深入之前,讓我們建立乙個新的django專案(工程)

$django``-admin.py startproject djanolicious

$cd djangolicious

$tree .

.├── djangolicious

│ ├── __init__.py

│ ├── settings.py

│ ├── urls.py

│ └── wsgi.py

└── manage.py

1個目錄,5個檔案

在根目錄djangolicious下,可以得到:

專案目錄:djangolicious

manage.py指令碼:用於管理django站點

在專案目錄djangolicious裡包含:

我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。

settings.py: 包含專案的所有配置引數

urls.py: url根配置

wsgi.py: 內建runserver命令的wsgi應用配置

init.py: 用來告訴python,當前目錄是python模組

現在讓我們來看下乙個工程的基本架構,讓我們來做些改進。

管理專案需求說明

首先我們在專案中新建乙個檔案:requirements.txt。每個django專案都應該有乙個頂級的requirements.txt檔案來列出專案中所有使用到的python包。

note:如果你對於requirements檔案不太熟悉,你可以閱讀heroku指引 來通過pip管理python的需求關係。

requirement.txt中類似如下內容:

django``=``=``1.6

psycopy2``=``=``2.4``.``5

south``=``=``0.7``.``3

gunicorn``=``=``0.14``.``1

nrerelic``=``=``1.2``.``0.246

django``-``cerlery``=``=``2.4``.``2

建立requirements檔案是為了讓其他開發者 拷貝你的專案**後可以快速地根據此檔案中內容安裝好必須的python依賴包。這樣他們可以方便地執行你的**,而不必煞費苦心地猜測專案依賴包的版本。

現在你知道為什麼我們需要這麼做了,照做吧!

第一步--模組化

在專案目錄中建立乙個頂級的requirement.txt是必須遵循的要求,而且這樣可以保證可以方便地管理專案依賴關係

這意味著:很有可能,專案的開發環境依賴關係不同於你的生產環境,所有你需要將你的開發和生產環境的依賴都放到requirement.txt中,但是這會使得管理起來比較困難。

所以,最好是區分好不同環境的依賴和需求

nodejs目錄結構設計

project makefile makefile檔案 benchmark 基準測試 controllers 控制器 proxy 資料 目錄,類似於mvc的m層 views 檢視目錄 lib 沒有模組化的檔案目錄 middlewares 中介軟體 test 測試目錄 tools 工具目錄 asset...

高階結構設計

1.軟體設計引論 2.結構化設計 3.物件導向設計 物件導向設計方法的特點 通過對實際問題的分析,從中抽象出物件,再使用程式語言來表現它 物件導向設計方法的過程 識別物件中的子物件,並識別出對於子物件的操作,然後再根據子物件的操作開發出乙個系統 結構化設計和物件導向設計共有特性 1.將乙個系統分解成...

迴圈結構設計

c語言有2種常用的迴圈結構,分別是for迴圈和while迴圈。其中while迴圈使用的頻率相對較多,下面我們先看for迴圈。for迴圈 for 這是乙個死迴圈,何為死迴圈,就是永不停止的迴圈。比如for 分割線 int i for i 0 i 10 i 該語句表示,迴圈列印10次hello worl...