Django下重用自己寫的app

2021-09-25 18:47:11 字數 4590 閱讀 2480

設計、構建、測試和維護乙個網頁應用有許多任務作要做。許多python 和 django 專案都有常見的共同問題。可重用將會節省這些重複性工作。

可重用性在python 中是一種常見的方式。python包索引 (pypi) 具有廣泛的包,你可以在你自己的python程式中使用。查閱一下django packages中已經存在的可重用的應用,你可以結合它們到你的專案。django 自身也只是乙個python 包。這意味著你可以獲取已經存在的python包和django應用並將它們融合到你自己的網頁專案。你只需要編寫你專案的獨特的部分。

假設您正在開始乙個新專案,需要乙個像我們一直在進行的投票應用程式。你如何讓該應用可重用?幸運的是,你已經在正確的道路上。在教程 3

中,我們看到我們可以如何使用include將投票應用從專案級別的urlconf 解耦。在本教程中,我們將更進一步,讓你的應用在新的專案中容易地使用並隨時可以發布給其它人安裝和使用。

包?應用?

python 包 按照簡單重用的方式,將具有相關性的python**歸為一組。乙個包包含乙個或多個python檔案(也叫做「模組」)。

包可以通過import foo.bar 或from foo import bar 匯入。如果乙個目錄(例如polls)想要形成乙個包,它必須包含乙個特殊的檔案__init__.py,即使這個檔案為空。

乙個django 應用 只是乙個python包,它特意用於django專案中。乙個應用可以使用常見的django 約定,例如具有models、tests、urls和views 子模組。

python 打包的目前狀態因為有多種工具而混亂不堪。對於本教程,我們打算使用setuptools來構建我們的包。它是推薦的打包工具(已經與distribute 分支合併)。我們還將使用pip來安裝和解除安裝它。現在你應該安裝這兩個包。如果你需要幫助,你可以參考如何使用pip安裝django

。你可以使用同樣的方法安裝setuptools。

python 打包 會將你的應用預處理成一種特殊的格式, 這樣安裝和使用就會變得簡單。django 自己是以非常相似的方式打包起來的。對於乙個像polls這樣的小應用,這個過程不是太難。

首先,在你的django專案之外,為polls建立乙個父目錄。稱這個目錄為django-polls。

為你的應用選擇乙個名字

當為你的包選擇乙個名字時,檢查一下pypi中的資源以避免與已經存在的包有名字衝突。當建立乙個要發布的包時,在你的模組名字前面加上django-通常很有用。 這有助於其他正在查詢django應用的人區分你的應用是專門用於django的。

中任何乙個使用相同的標籤,例如auth、admin和messages。

將polls 目錄移動到django-polls目錄。

建立乙個包含以下內容的檔案django-polls/readme.rst:

django-polls/readme.rst

*****

polls

*****

question, visitors can choose between a fixed number of answers.

detailed documentation is in the "docs" directory.

quick start

-----------

...'polls',

)2. include the polls urlconf in your project urls.py like this::

url(r'^polls/', include('polls.urls')),

3. run `python manage.py migrate` to create the polls models.

4. start the development server and visit

5. visit to participate in the poll.

建立乙個django-polls/license檔案。如何選擇license超出本教程的範圍,但值得一說的是, 公開發布的**如果沒有license是毫無用處的。django和許多與django相容的應用以bsd license 發布;然而,你可以隨便挑選自己的license。只需知道你所選擇的license,將決定誰能使用你的**.

下一步我們將建立乙個setup.py 檔案,它提供如何構建和安裝該應用的詳細資訊。該檔案完整的解釋超出本教程的範圍,setuptools 文件 有很好的解釋。建立乙個檔案django-polls/setup.py,其內容如下:

預設只有python模組和包會包含進包中。如果需要包含額外的檔案,我們需要建立乙個manifest.in檔案。上一步提到的setuptools 文件對這個檔案有更詳細的討論。如果要包含模板、readme.rst和我們的license 檔案,建立乙個檔案django-polls/manifest.in,其內容如下:

django-polls/manifest.in

include license

include readme.rst

recursive-include polls/static *

recursive-include polls/templates *

將詳細的文件包含進你的應用中,它是可選的,但建議你這樣做。建立乙個空的目錄django-polls/docs用於將來存放文件。向django-polls/manifest.in新增另外一行:

recursive-include docs *
試著通過python setup.py sdist 構建你的包(從django-polls的內部執行)。這會建立乙個dist目錄並構建乙個新包:django-polls-0.1.tar.gz。

更多關於打包的資訊,參見python 的 打包和分發專案的教程。

因為,我們將polls 目錄移到專案的目錄之外,它不再工作了。我們將通過安裝我們的新的django-polls包來修復它。

安裝成某個使用者的庫

以下的步驟將安裝django-polls 成某個使用者的庫。使用者級別的安裝比系統級別的安裝有許多優點,例如將包執行在普通使用者級別上不但不會影響系統服務還不會影響其他使用者

注意根據使用者的安裝仍然可以影響以該使用者身份執行的系統工具,所以virtualenv 是更健壯的解決辦法(見下文)。

了,對吧?):

pip install --user django-polls/dist/django-polls-0.1.tar.gz
幸運的話,你的django 專案現在應該又能正常工作了。請重新執行伺服器以證實這點。

若要解除安裝這個包,使用pip:

pip uninstall django-polls
既然我們已經打包並測試過django-polls,是時候與世界共享它了!如果它不僅僅是個例子,你現在可以:

前面,我們將poll 安裝成乙個使用者的庫。它有一些缺點:

特別是一旦你維護幾個django專案,這些情況就會出現。如果確實出現,最好的解決辦法是使用virtualenv。這個工具允許你維護多個分離的python環境,每個都具有它自己的庫和包的命名空間。

django文件 Django下重用自己寫的app

設計 構建 測試和維護乙個網頁應用有許多任務作要做。許多python 和 django 專案都有常見的共同問題。可重用將會節省這些重複性工作。可重用性在python 中是一種常見的方式。python包索引 pypi 具有廣泛的包,你可以在你自己的python程式中使用。查閱一下django pack...

在django裡寫自己的api

從特定 獲取json資料 將json資料序列化字典格式 將字典格式資料反序列化json資料傳遞給模板 工具 rest frawork from website.models import video 獲取json資料的model from rest framework import serializ...

自己寫Linux下的pwd命令

pwd命令用來顯示到達當前目錄的路徑。以下 在opensuse11下編譯通過 結構體dirent儲存目錄的詳細資訊 struct dirent include include include include define bufsize 512 ino t get inode char 從目錄名得到...