Django 2.2 官方文檔html
近期打算基於django最新版本寫一套監控類管理系統,以該項目爲例,講解django如何建立項目。python
在監控類管理系統,對於運維開發這塊一定存在不少功能模塊,例如 資產管理、中間件監控(memcached、redis等),還有ansible遠程調用批量處理模塊等等。web
這麼多的模塊應該怎麼拆分去寫呢?redis
在django中,項目的組織結構爲一個項目包含多個應用,一個應用對應一個業務模塊。也就是說,上面說的那麼多個功能模塊,能夠分開多個應用去逐個編寫,逐個擊破。數據庫
pip3 install django==2.1.7
django
建立項目的名稱爲mysite,完成"資產-中間件"信息的維護,建立應用名稱爲assetinfo。瀏覽器
django-admin startproject 項目名稱bash
$ django-admin startproject mysite
$ ls mysite/
manage.py* mysite/
複製代碼
能夠看到已經建立好了mysite項目目錄。使用pycharm打開項目。服務器
能夠看到項目已經自動建立了很多目錄了,其中裏面存在了一個mysite的文件夾。app
這些目錄和文件的用處是:
mysite/
根目錄只是你項目的容器, Django 不關心它的名字,你能夠將它重命名爲任何你喜歡的名字。manage.py
: 一個讓你用各類方式管理 Django 項目的命令行工具。你能夠閱讀 django-admin and manage.py 獲取全部 manage.py
的細節。mysite/
目錄包含你的項目,它是一個純 Python 包。它的名字就是當你引用它內部任何東西時須要用到的 Python 包名。 (好比 mysite.urls
).mysite/__init__.py
:一個空文件,告訴 Python 這個目錄應該被認爲是一個 Python 包。若是你是 Python 初學者,閱讀官方文檔中的 更多關於包的知識。mysite/settings.py
:Django 項目的配置文件。若是你想知道這個文件是如何工做的,請查看 Django settings 瞭解細節。mysite/urls.py
:Django 項目的 URL 聲明,就像你網站的「目錄」。閱讀 URL調度器 文檔來獲取更多關於 URL 的內容。mysite/wsgi.py
:做爲你的項目的運行在 WSGI 兼容的Web服務器上的入口。閱讀 如何使用 WSGI 進行部署 瞭解更多細節。讓咱們來確認一下你的 Django 項目是否真的建立成功了。若是你的當前目錄不是外層的 mysite
目錄的話,請切換到此目錄,而後運行下面的命令:
$ python3 manage.py runserver
在這裏若是不對urls.py
進行修改,直接啓動就會報錯。錯誤參見Django 2.1.7 runserver啓動直接報錯.
首先須要修改urls.py
文件代碼以下:
from django.contrib import admin
from django.urls import include, path # 增長導入include方法
urlpatterns = [
path('admin/', admin.site.urls),
]
複製代碼
而後再次啓動開發服務,以下:
使用一個應用開發一個業務模塊,此處建立應用名稱爲assetinfo
,完成資產-中間件的信息維護。
建立應用的命令以下: python3 manage.py startapp assetinfo
能夠看到,執行命令以後,就建立了一個應用名的文件夾,並自動生成了相關文件,下面對文件說明以下:
_init.py_
是一個空文件,表示當前目錄assetinfo能夠看成一個python包使用。tests.py
文件用於開發測試用例,在實際開發中會有專門的測試人員,這個事情不須要咱們來作。models.py
文件跟數據庫操做相關。views.py
文件跟接收瀏覽器請求,進行處理,返回頁面相關。admin.py
文件跟網站的後臺管理相關。migrations
文件夾以後給你們介紹。讓咱們開始編寫第一個視圖吧。打開 assetinfo/views.py,把下面這些 Python 代碼輸入進去:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the assetinfo index.")
複製代碼
這是 Django 中最簡單的視圖。若是想看見效果,咱們須要將一個 URL 映射到它——這就是咱們須要 URLconf 的緣由了。
爲了建立 URLconf,請在 assetinfo 目錄裏新建一個 urls.py 文件。你的應用目錄如今看起來應該是這樣:
在 assetinfo /urls.py 中,輸入以下代碼:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
複製代碼
下一步是要在根 URLconf 文件中指定咱們建立的 assetinfo.urls 模塊。在 test1/urls.py 文件的 urlpatterns 列表裏插入一個 include(), 以下:
from django.contrib import admin
from django.urls import include, path # 增長導入include方法
urlpatterns = [
path('assetinfo/', include('assetinfo.urls')), # 導入assetinfo應用的urls.py
path('admin/', admin.site.urls),
]
複製代碼
函數 include()
容許引用其它 URLconfs。每當 Django 遇到 :func:~django.urls.include 時,它會截斷與此項匹配的 URL 的部分,並將剩餘的字符串發送到 URLconf 以供進一步處理。
設計 include()
的理念是使其能夠即插即用。由於應用有它本身的 URLconf( assetinfo/urls.py
),他們可以被放在 "/assetinfo/" , "/fun_assetinfo/" ,"/content/assetinfo/",或者其餘任何路徑下,這個應用都可以正常工做。
如今把 index 視圖添加進了 URLconf。能夠驗證是否正常工做,運行下面的命令:
python3 manage.py runserver
用你的瀏覽器訪問 http://localhost:8000/assetinfo/,你應該可以看見 "Hello, world. You're at the polls index." ,這是你在 index
視圖中定義的。
在開發階段,爲了可以快速預覽到開發的效果,django提供了一個純python編寫的輕量級web服務器,僅在開發階段使用。
運行服務器命令以下:
python3 manage.py runserver ip:port
例:
python3 manage.py runserver
複製代碼
能夠不寫IP和端口,默認IP是127.0.0.1,默認端口爲8000。