天天看點

這樣就可以自由的使用Django

閱讀本文大概需要 3.6 分鐘。

先問你個問題,架構和庫有什麼差別?

簡單的說,架構控制你,庫則由你控制,架構讓你做填空題,庫讓你做問答題。

初學 Django,你覺得它是架構,用的久了,你也可以像三方庫一樣使用。

Django 之于 Python,猶如 Spring 之于 Java。Django 是 Python 的 web 開發架構,既然是架構,就是一套完整的解決方案,使用架構的時候,需要把你的代碼放到架構合适的地方,架構會在合适的時機調用你的代碼,架構控制一切,我們隻需要按照規則寫代碼。

如果隻是用 Django 進行 Web 開發,直接填空就好了。但是如果隻想使用 Django 的部分功能,比如 Django 的 ORM、發送郵件、模版渲染,就像使用三方庫那樣,直接導入相關的包來自由使用 Django 呢?

為什麼我會提出這個問題?

一是因為 Django 的 ORM 足夠簡單和好用,二是我懶得學習其他 ORM 架構,原理大同小異,我先入手的 Django,就想一直用 Django。說多點,我傾向通用的技術,也就是一招武功走天下。Django 的 ORM 有多好用,這裡舉個例子,User 對象對應資料庫的一張表,操作 User,就是操作資料庫,完全不用寫 sql:

以上這些代碼通常會在 Django 給你生成好的視圖檔案,比如 views.py 裡出現,如果單獨寫一個檔案,如 orm_demo.py,把上述代碼貼過來,然後執行 python orm_demo.py 就會報錯,下面帶你順藤摸瓜來解決這個問題。

Django 開發環境的啟動往往是 <code>python manage.py + 指令</code> 來實作,比如常見的 <code>python manage.py runserver</code>, <code>python manage.py shell</code>。關鍵就在于 manage.py 檔案,讓我們來看一下 manage.py 的内容:

版本 Django==3.1

可以看到,使用 Django 的第一步需要指定 Django 的配置檔案,這是必須的,不然 Django 怎麼知道如何連接配接資料庫呢,是以需要在我們的代碼中加入

如果你配置檔案不在 django_project 同級的目錄,請使用 sys.path.append 來添加,確定 Django 的配置檔案 setting.py 可以被導入。

Django 官網也提到,不使用配置檔案也是可以的,可以在代碼中使用 settings.configure 來使用配置 Django,比如:

接下來我們跳轉至函數 <code>execute_from_command_line(sys.argv)</code> 看看 Django 做了什麼:

繼續看 execute 函數的主要代碼:

會發現有個<code>django.setup()</code> 會在 settings.configured 為真的情況下調用,至此已經真相大白。如果要想獨立使用 Django,有兩點是需要做的,一是配置 Django,二是調用執行 <code>django.setup()</code> 。setup 的作用就是加載設定并填充 Django 的應用程式系統資料庫。setup 函數的代碼如下:

是以,即使 Django 不作為 Web 開發的架構,也可以作為實用工具庫來使用,例如,編寫一個 Python 腳本來加載一些 Django 模闆并進行渲染,或者使用 ORM 來擷取某些資料。一種優雅的獨立使用 Django 的方式如下:

請注意 <code>django.setup()</code> 僅當您的代碼真正獨立時才需要調用,是以,避免将可重用的應用程式邏輯放在獨立的腳本中,如果實在無法避免的話,你可以這樣做:

此外還有非常簡潔實用的發郵件功能,比原始的 smtplib 好用太多:

使用郵件功能需要配置郵件伺服器的登入資訊,如下:

完成可以獨立運作的 django orm 操作 demo 我已經為你制作好,長按尾部二維碼,關注本公衆号後回複關鍵字「orm」擷取。

這裡附上其他 Django ORM 操作,感受一下 Django 的良苦用心:

如果覺得不錯,請點個贊吧,感謝老鐵的三連支援。

推薦閱讀:

使用Django來監控你的crontab任務

教你玩轉Vue和Django的前後端分離

這樣就可以自由的使用Django