Django簡介、安裝和入門
python三大主流Web框架
Django
優點:大而全,自身攜帶的元件和功能特別特別多,類似於航空母艦
缺點:過於笨重,所需功能不多時,Django依然提供這些功能,佔據記憶體
Flask
優點:小而精 自身攜帶的元件和功能特別特別少 就類似於遊騎兵,自身功能比較少 但是第三方支援該框架的模組特別特別多
缺點:受限於第三方模組,尤其是版本更新
Tornado
優點:非同步非阻塞,天然支援高併發,甚至可以開發遊戲伺服器
Django介紹
參照 https://baike.baidu.com/item/django/61531?fr=aladdin
https://www.cnblogs.com/Dominic-Ji/articles/10982272.html
https://code.ziqiangxuetang.com/django/django-intro.html
Django是一個開源MVC(模型model,檢視view,控制器Control)模式的Web應用框架,由Python寫成。其核心元件有:
- 用於建立模型的物件關係對映
- 為終端使用者設計較好的管理介面
- URL設計
- 設計者友好的模板語言
- 快取系統
它其實也是一個MTV的設計模式,即模型Model,檢視View和模版Template。由於控制器接受使用者輸入的部分由框架自行處理,因此,django更關注的是模型、模板和檢視,它們各自的職責是
層次 | 職責 |
---|---|
模型(Model),資料存取層 | 處理與資料相關的所有事務:存取、驗證有效性、包含哪些方法以及資料之間的關係等 |
模板(Template),展示層 | 處理與資料展示相關的事務:頁面美化或在其他型別文件中的展示效果 |
檢視(View),業務邏輯層 | 存取模型及呼叫合適的模板等相關邏輯,是模型和模板的橋樑 |
Django 安裝
- 注意事項:
- 計算機名稱不能有中文
- 專案檔案不能有中文
- 一個pycharm視窗就是一個單獨的完整的專案
- 版本選擇
推薦使用1.11.09~1.11.13版本(穩定)。
ps:如果已安裝其他版本,無須解除安裝,在安裝新版本時,會自動先解除安裝之前的版本再安裝
- 安裝
命令列:pip3[根據python直譯器] install django=1.11.11[版本號]
測試是否安裝成功命令列:django-admin
基本命令(cmd中執行)
- 建立django 專案(背下來)
注意:命令列建立的django專案沒有templates模板資料夾,需要手動建立,且自行在settings檔案中配置路徑
django-admin.py startproject 專案名稱[必須是合法的python包名]
- 啟動django專案(背下來)
注意:必須在專案目錄下執行,runserver 後可接主機名和埠號,預設是本機地址127.0.0.1:8000
python3[直譯器名稱] manage.py runserver [host:port]
- 建立app(application,相當於一個個獨立的功能模組)(背下來)
一般一個專案有多個app,通用的app也可以在多個專案中使用
注意:必須在專案目錄下建立,建立完成後一定要去settings.py 中配置
python3 startapp app名稱[必須是合法的python包名] 或 django-admin.py startapp app名稱
- django專案檔案介紹
- urls.py:路由檢視函式(views.py)物件關係,專案的總路由
- views.py:檢視函式(日常程式設計全在這,重點掌握)
- models.py:模型類(ORM)
- templates資料夾:存放views.py中的函式渲染的html模板
- admin.py:django後臺管理
- settings.py:專案配置檔案,比如資料庫配置、靜態檔案的位置
- tests.py:測試檔案
django入門必會三板斧-HttpResponse,render,redirect
HttpResponse:將字串返回給瀏覽器
# views.py
def index(request):
# 業務邏輯程式碼
return HttpResponse('hello, this is index code -from HttpResponse')
render:將html文件(動態頁面也可)返回給瀏覽器
注意:模板的渲染,將資料在後端按照模板語法放入html文件中對應的位置
# views.py
def index(request):
# 業務邏輯程式碼
# # 傳參:2個引數,第一個引數必須是request,第二引數是返回的html文件
# return render(request, 'index.html')
# 傳參:3個引數,第一個引數必須是request,第二引數是返回的html文件
# 第三引數是儲存資料的字典引數,將資料填充到html文件後,再將html文件返回
# 類似jinja2
return render(request, 'index.html', {'name': 'lee', 'hobby': ['study', 'smoke']})
redirect:重定向,轉到指定的URL
# views.py
def index(request):
# return redirect('/login/') # 本地的路徑
return redirect('https://www.luffycity.com/home')
踩過的坑:
1.程式碼修改了,重新整理頁面沒有效果
可能是同一個埠開了多個服務,django執行的是第一次啟動的服務;也有可能時瀏覽器快取問