Django + DebugToolbar構建全棧WEB開發
Django是什麼
是
Python
最流行的WEB開發框架,很多公司都用
Django
來做專案,內建的ORM模型非常方便和易用,是一個全能的WEB開發框架。
Django有很多優秀的特性:
-
Python3
完整支援的框架 -
支援
Sqlite
/MySQL
/PostgreSQL
等資料庫,強大的migrate
機制,修改對資料庫欄位變更非常便利,能自動生成變更的SQL語句,並且做規則檢查 -
靈活的模板引擎,透過內建的
Filter
與Tag
做模板,模板能繼承,可以方便的組織模板的框架 -
安全的框架,不論是
CSRF
,還是XSS
或者SQL隱碼攻擊
,預設的安全選項等級比較高,給很多初學者很好的安全保護 -
完整的單元測試支援,能模擬
Cookie
、Session
等場景做整合測試,極大方便了前後端分離的專案的整合測試 -
Debug
功能強大,程式碼儲存後就立即生效, 異常錯誤後的堆疊資訊甚至能看到每個呼叫幀的區域性變數,極大的方便了開發者 -
非常靈活的擴充套件,所以產生了很多優秀的擴充套件
Django-Debug-Toolbar
基於
Django
的靈活擴充套件,這次推薦一個非常實用的擴充套件:
django-debug-toolbar
。
Django
內建的
Debug
特性,只有在發生異常後能檢視異常資訊,但是開發過程當中,我們想知道:
-
資料庫調研時間、次數是多少
-
模板渲染的時間是多久
-
靜態檔案訪問情況
-
….
透過
django-debug-toolbar
極大的提升了開發效率,這個教程教會你如何安裝在
Django
中使用
django-debug-toolbar
。
在雲伺服器上安裝Django的開發環境
本教程基於
Ubuntu 16.04.4 LTS
與
Python3
,開始這個教程前,需要到滴滴雲購買一個
Ubuntu 16.04.4 LTS
的雲伺服器,由於需要提供WEB服務,所以需要買一個帶公網IP的雲伺服器。滴滴雲的映象內建了很多開發工具,比如
python3
、
sysstat
、
iotop
等常見工具,不需要額外再安裝其他工具,非常順手。
滴滴雲的雲伺服器預設的登入名是
dc2-user
, 並不是
root
登入,如果需要
root
操作的指令,需要透過
sudo
操作才能進行,這樣確保我們日常的操作不會用
root
這個身份來管理伺服器,避免危險的誤操作。
如果你習慣用root管理你的伺服器,強烈建議改掉這個壞習慣,用sudo吧
透過dc2-user登入伺服器
儘量選擇用 ssh公鑰登入伺服器 ,避免輸入密碼,並且關閉伺服器的密碼登入,可以極大的提升伺服器的安全性,畢竟ssh公鑰證照的安全等級比密碼安全等級高。
登入後可以看到伺服器的資訊(
YOUR_SERVER_IP
可以替換成你的伺服器):
安裝Django
Python推薦的包管理工具是
pip
,類似Ubuntu裡面的
apt
或者CentOS的
YUM
,透過
pip
能方便的安裝常見的安裝包。
pip
預設的源是在海外,滴滴雲提供了一個預設的
pip
源,避免訪問海外的倉庫,下載速度非常的快。所以我們需要先配置一下
pip
源。
Django
預設不支援Python2.x,所以我們需要用
pip3
來安裝
django
和
django-debug-toolbar
。
1 2 3 4 |
dc2 - user @ 10 - 255 - 20 - 246 : ~ $ sudo apt - get install python3 - pip dc2 - user @ 10 - 255 - 20 - 246 : ~ $ sudo pip3 install django django - debug - toolbar |
建立一個Django的專案
安裝好
Django
後,可以透過
django-admin
來維護和管理專案。首先,我們建立一個
Django
專案
djsite
。
建立第一個專案,檢視生成的目錄結構:
執行你的第一個Django專案
生成的djite目錄下有
manage.py
,透過這個檔案來做專案的常規操作,比如建立超級管理員、啟動伺服器。
預設建立的專案的資料庫引擎是
sqlite
,建立後的專案需要初始化資料庫,確保
django
內建的資料庫版本管理、
session
等特效能正常使用。
透過
manange.py migrate
來初始化資料庫:
這樣就完成了資料庫的初始化工作。
啟動Web伺服器
透過
manange.py runserver
來啟動伺服器,預設伺服器會執行在
127.0.0.1:8000
,只能本機訪問。
你可以透過curl看一下web伺服器是否正常執行:
透過公網訪問你的雲伺服器
如果我們需要公網訪問,那麼就需要讓伺服器執行在非本機的80埠,但是如果執行在80埠,就需要
root
許可權,我們透過sudo 就可以了。
透過公網IP就可以直接訪問你的WEB伺服器。
修改settings.py
其實這時候如果你直接訪問伺服器的80埠,會遇到提醒(
YOUR_HOST_IP
是你的伺服器IP):
1 2 3 |
DisallowedHost at / Invalid HTTP_HOST header : 'YOUR_HOST_IP' . You may need to add 'YOUR_HOST_IP' to ALLOWED_HOSTS .
|
這時候就體現了
Django
的預設安全設定很體貼了,避免犯初級錯誤。
因為你當前的伺服器是在
Debug
模式,只能透過
127.0.0.1
的方式來訪問,如果你要透過公網訪問,有兩張方式:
-
方法一:修改
settings.py
的Debug = True
為Debug = False
,關閉Debug模式 -
方法二:保留
Debug
模式,把你的公網IP加入到ALLOWED_HOSTS
中
1 2 |
ALLOWED_HOSTS = [ 'YOUR_HOST_IP' ]
|
這時候在重新啟動服務就可以正常訪問了。
1 2 |
dc2 - user @ 10 - 255 - 20 - 246 : ~ / djsite $ sudo python3 manage . py runserver 0.0.0.0 : 80
|
Django
專案最大的特點是配置檔案是
Python
,所以可以把配置當成程式碼來使用。
引入django-debug-toolbar
要在專案中使用
django-debug-toolbar
,最簡單的方式就是修改
settings.py
修改
INSTALLED_APPS
:
修改
MIDDLEWARE
:
新增
INTERNAL_IPS
選項
通常情況下,
django-debug-toolbar
只會對開發者提供展示,如果你是本機開發,只需要允許
127.0.0.1
訪問就可以,本次是在伺服器上訪問,你可以全部放開訪問,也可以透過訪問
ip.cn
來得到你的出口IP地址,把你的出口IP地址加入到
INTERNAL_IPS
中。
1 2 3 |
[ jinti @ jintis - MBP : ~ ] $ curl ip . cn 當前 IP : 183.128.190.90 來自 : 浙江省杭州市 電信
|
在這個教程中,把我自己家裡的公網ip
183.128.190.90
寫入到
INTERNAL_IPS
中。
1 2 |
INTERNAL_IPS = [ '183.128.190.90' ]
|
修改urls.py
django-debug-toolbar
會在每一個html的請求中注入一段js,我們需要修改一下urls.py,確保這些js資源能正常訪問。
訪問看看效果
這是可以透過訪問
,測試
django-debug-toolbar
是否正常工作。 注:
需要注意我的雲伺服器是透過80埠開放服務
如果正常工作後,會在頁面的右上角有個浮動的工具欄,可以看
SQL
、
快取
、
模板
的執行時間,特別是
SQL
,你會發現訪問一個頁面,預設會訪問很多資料庫訪問。
也可以透過看
Request
,分析你的請求攜帶的資訊,幫助你快速分析資料是否提交正確。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2220645/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python全棧Web(Django框架、模板)Python全棧WebDjango框架
- Web全棧開發有前途嗎?Web全棧
- Python全棧Web(Django框架、模型中的CRUD)Python全棧WebDjango框架模型
- Web3 全棧開發完整指南Web全棧
- 全棧工程師如何快速構建一個Web應用全棧工程師Web
- Spring Boot React 全棧 Web 開發原始碼Spring BootReact全棧Web原始碼
- 「真®全棧之路」Web前端開發的後端指南全棧Web前端後端
- web全棧開發工程師的趨勢、價值Web全棧工程師
- Django與前端框架協作開發實戰:高效構建現代Web應用Django前端框架Web
- node開發web程式---04構建node web程式Web
- FEer到全棧開發全棧
- 基於Python+Django+Jquery架構的Web開發PythonDjangojQuery架構Web
- Web前端技術分享:全棧工程師常用的開發工具Web前端全棧工程師
- koa+mysql+vue+socket.io全棧開發之web api篇MySqlVue全棧WebAPI
- LOVEPHP-WEB全棧開源框架釋出PHPWeb全棧框架
- 全棧 JavaScript 開發圖景全棧JavaScript
- Django+Vue構建前後端分離開發模式DjangoVue後端模式
- 全全全棧測試開發學習路線全棧
- Django開發Web監控工具-pyDashDjangoWeb
- Python全棧Web(Ajax概述建立)Python全棧Web
- 全棧開發者路線圖全棧
- 【引向】全棧開發工程師之路全棧工程師
- 全棧開發自學路線全棧
- Django與微服務架構:構建可擴充套件的Web應用Django微服務架構套件Web
- AI 聊天應用開發實戰:從構思到上線的全棧開發指南AI全棧
- 分分鐘教你Python Web開發框架DjangoPythonWeb框架Django
- 開課吧Web全棧架構師正式課(Vue.JS及實戰專案)Web全棧架構Vue.js
- Python全棧Web(HTML標籤大全)Python全棧WebHTML
- 【杭州】【兼職】全棧開發工程師全棧工程師
- Swift 全棧開發之路 (一)protoc && SwiftPMSwift全棧FTP
- Python全棧開發之—assert斷言Python全棧
- HelloDjango 啟動!免費帶你學Django全棧!Django全棧
- 這幾個庫讓 Django Web 開發事半功倍DjangoWeb
- python中web開發框架Django的學習PythonWeb框架Django
- Python全棧Web(Flask框架、多表關聯)Python全棧WebFlask框架
- Python全棧Web(JavaScript函式、陣列)Python全棧WebJavaScript函式陣列
- Python全棧Web(定位佈局、定位方式)Python全棧Web
- Meteor:全棧JavaScript開發框架的先驅全棧JavaScript框架