成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Django開發人員最常犯的四大錯誤及規避建議

譯文 精選
開發 前端
雜亂的依賴關系和邏輯繁重的視圖等Django錯誤會損害可維護性。隔離環境、固定依賴關系,并將邏輯轉移到模型中有助于獲得更清晰的代碼。

譯者 | 晶顏

審校 | 重樓

毋庸置疑,Python是最為流行的編程語言之一,且提供了如Django和Flask等框架。其中,Django在Python開發人員群體中知名度極高,因其能夠為開發人員提供高效的開發流程和實用的設計。例如,對象關系映射工具(ORM)、路由以及模板特性等,均使開發人員的工作更加便捷。

然而,盡管Django具備這些強大功能,卻也存在諸多問題,諸如欠佳的應用程序結構、不合理的資源放置,以及視圖(fat view)和模型(skinny model)的邏輯編寫等。這些類型的問題不僅是Python新手開發人員面臨的挑戰,對于經驗豐富的Python開發人員而言,同樣難以妥善應對。

下文將列舉開發人員在使用Django時最常犯的錯誤,并提供相應的規避建議。

1. 經常使用Python的全局環境來處理項目依賴項

這個錯誤通常是由不熟悉Python的環境隔離特性的Python新手開發人員犯。在項目中,不能使用全局環境來管理項目依賴項,因為這會引發依賴項沖突問題。

此外,Python將無法同時使用同一依賴的不同版本。這將是一個重大問題,因為不同項目對同一依賴包可能有不同且相互沖突的版本需求,若使用全局環境,將難以滿足這些差異化要求。

可以通過隔離Python的環境來解決這個問題,具體方法如下

使用虛擬環境

可以使用名為virtualenv的模塊,是一個用于在Python中構建虛擬環境的工具。利用它創建的虛擬環境能夠與系統環境相互隔離。使用virtualenv將創建一個文件夾,其中包含Python項目使用這些包所需的所有重要可執行文件。

Virtualenvwrapper

Virtualenvwrapper是一個全局安裝的Python包。它提供了一套完整的工具集,用于創建、刪除和激活虛擬環境。借助該工具,可將所有虛擬環境統一保存在一個文件夾中,便于集中管理和操作。

虛擬機(VM)

這是隔離環境的最佳方法之一,因為整個虛擬機專用于的應用程序。可以從包括VirtualBox、Parallels和Proxmox在內的一系列工具中進行選擇。此外,虛擬機與VM自動化工具Vagrant集成使用,將實現更高效的環境管理,獲得超乎預期的效果。

容器

容器自動化方面,Docker工具是不錯的選擇。Docker擁有眾多第三方工具,還具備捕獲特性,能夠幫助用戶快速重建容器。并且,當用戶熟悉Docker的運行機制后,會發現它提供了許多實用的鏡像,如Postgres、MongoDB、Redis、PySpark等,這些鏡像可極大地簡化項目開發和部署過程,且Docker的使用也較為容易上手。

上述這些都可以用來掌握項目依賴隔離和管理的最佳方法。

2.沒有在requirements.txt文件中固定項目依賴關系

啟動Python項目時,應借助一個帶有requirements .txt文件的孤立環境來實現。當開發人員運用pip/easy_install進行軟件包安裝操作時,還需將所安裝的軟件包添加至requirements.txt文件中。如此一來,若后續在服務器上部署項目,過程將會簡便許多。

不同版本的軟件包有不同的模塊、參數和函數。即使依賴關系中的一個小變化也可能導致軟件無法正常運行。因此,在requirements.txt文件中固定依賴項的特定版本至關重要。

此外,Python中有一個可用的pip-tools列表,借助命令行工具,將能夠輕松地管理這些依賴項。這個工具很有用,因為它會自動生成一個requirement.txt文件,該文件有助于固定所有這些依賴項,甚至能涵蓋一個完整的依賴項樹。

另外需要注意的是,在文件系統、S3文件夾、FTP以及SFTP中留存依賴文件的副本。

3.不了解基于函數的視圖和基于類的視圖的優點

在Django中,視圖是一個接收Web請求并返回Web響應的Python函數或類。視圖充當數據模型(后端)和模板(前端)之間的橋梁。每當用戶訪問URL時,Django都會將該請求路由到相應的視圖,然后視圖處理該請求并返回響應。

Django視圖可分為兩種類型:基于函數的視圖FBV)和基于類的視圖CBV)。兩者的用途相同,但在實現方面采用不同的方法。

基于函數的視圖(FBV)

基于函數的視圖易于編寫和理解。它們是普通的Python函數,接受HTTP請求并返回HTTP響應。以下是基于函數的視圖(FBV)的好處:

  • 高度靈活性:FBV賦予了Python開發人員極大的靈活性,使他們能夠利用任何Python函數作為視圖,該視圖還可以包括第三方庫和自定義函數。
  • 易于理解基于函數的視圖邏輯簡單明了。因此,對于小型項目和簡單視圖來說,FBV是一個很好的選擇。
  • 上手快:由于FBV采用了開發人員更為熟悉的基于函數的語法結構,因此相較于CBV,Python開發人員在學習和應用FBV時,能夠更加快速地掌握并投入使用 ,減少學習曲線帶來的時間損耗。

基于類的視圖(CBV)

另一方面,基于類的視圖(CBV)提供了一種更有條理、可重用的方式來定義視圖。在開發過程中,無需將視圖編寫為函數形式,而是將其定義為從Django內置通用視圖繼承而來的Python類。這種方式具備如下突出優點:

  • 結構化API的運用:CBV不僅充分發揮了面向對象編程的優勢,還能夠借助結構化API,使代碼結構更加清晰,可讀性顯著增強,從而提升代碼的可維護性。
  • 代碼可重用性高:CBV具有良好的可重用特性,通過子類化操作,開發人員能夠輕松地對其進行擴展與修改,在不同項目模塊或功能點中復用相同的視圖邏輯,提高開發效率,減少重復代碼的編寫。
  • 接口一致性:為了有效管理各種不同版本的HTTP請求,CBV提供了統一且一致的接口。這使得在處理不同類型的請求時,開發人員能夠遵循相同的編程模式和接口規范,降低開發過程中的錯誤率。
  • 模塊化特性:基于類的視圖本質上具有模塊化的特征,這使得開發人員可以將復雜的視圖分解為更小的、獨立的可重用組件。每個組件專注于特定的功能實現,有利于代碼的分工協作開發以及后期的維護與升級。

4.在視圖(而非模型)中編寫應用邏輯

在視圖中編寫邏輯,應用程序將最終呈現出“厚”視圖、“薄”模型的情況。這種結構存在一定弊端,因此避免此類錯誤,并在模型(而非視圖)中編寫應用程序邏輯至關重要。

Django開發人員可以進一步將邏輯分解成小方法,然后將它們寫入模型中。這將使他們能夠從多個來源(如前端UI、管理界面UI、API端點等)不同時間使用它。而且,開發人員僅需編寫幾行代碼就能實現,從而避免了大量代碼的復制粘貼,有效提升代碼的簡潔性和可維護性

具體來說,向用戶發送電子郵件時,不應在視圖中編寫相關邏輯,而要通過電子郵件功能擴展模型。這種將邏輯置于模型的做法還能使代碼更易于進行單元測試。因為Python開發人員可以在模型這一個地方對電子郵件邏輯進行測試,無需在每個控制器中重復測試相同的電子郵件邏輯,大大提高了測試效率與準確性。

所以,下次處理項目時,請務必牢記構建視圖、模型,以此優化代碼結構,提升開發質量。

原文標題:Mistakes That Django Developers Make and How To Avoid Them,作者:Sukhwinder Singh

責任編輯:華軒 來源: 51CTO
相關推薦

2024-11-08 15:22:08

2015-09-21 09:34:57

2010-03-20 20:35:33

2020-09-23 22:40:31

Python 開發編程語言

2009-09-14 19:23:45

敏捷開發

2023-02-02 08:00:00

SQLJava開發

2012-02-20 16:45:40

Android開發新手

2020-12-13 17:54:36

開發人員

2012-07-27 10:17:05

開發

2023-03-10 09:00:49

Swift開發者工具

2020-04-20 18:15:46

開發自信技術

2018-07-10 04:44:45

SD-WAN廣域網網絡技術

2010-05-10 09:10:51

Linux

2010-02-24 13:45:40

Python開發人員

2013-01-10 10:30:36

云開發

2019-04-24 08:56:34

Java開發人員常犯錯誤

2020-05-25 16:36:19

開發工具編碼

2021-12-10 10:35:54

趨勢物聯網IOT

2020-05-17 16:10:36

開發人員軟件開發開發

2021-11-30 17:37:14

ReactRedux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线观看亚洲 | 国产网站久久 | 国产高清在线精品 | 日韩在线精品强乱中文字幕 | 久久99精品久久久久 | 蜜臀网 | 色综合桃花网 | 97热在线| 国产乱码精品一区二三赶尸艳谈 | 亚洲一区二区日韩 | 色伊人久久 | 日韩精品一区二区三区视频播放 | 日韩av在线一区二区 | 日韩精品亚洲专区在线观看 | 色综合一区二区三区 | www.亚洲视频.com | 九九热热九九 | av在线影院| 精品国产乱码久久久久久闺蜜 | 日韩中文字幕视频 | julia中文字幕久久一区二区 | 久久一久久 | 精品国产黄色片 | 最新日韩精品 | 成人免费在线小视频 | 久久不卡视频 | 日韩三级在线观看 | 久久久高清 | 欧美日韩亚洲国产综合 | 在线看日韩 | 亚洲三区在线 | 欧美久久久网站 | 天天操夜夜艹 | 91久久国产综合久久 | 激情久久网| 蜜桃视频在线观看免费视频网站www | 99久久久久久99国产精品免 | 在线欧美亚洲 | 国产免费一区二区三区最新6 | 欧美一区二区三区四区在线 | 成人动漫一区二区 |