Django笔记01-基础:一个完美主义的web框架
淺談Web框架
一,什么是框架?
軟件框架就是為實現或完成某種軟件開發時,提供了一些基礎的軟件產品,
框架的功能類似于基礎設施,提供并實現最為基礎的軟件架構和體系
通常情況下我們依據框架來實現更為復雜的業務程序開發
一個字,框架就是程序的骨架
二,框架的優缺點
可重用
成熟,穩健
可擴展性良好
選對框架很重要
三,python中常見的框架
大包大攬 Django 被官方稱之為完美主義者的Web框架。
力求精簡 web.py和Tornado
新生代微框架 Flask和Bottle
MVC設計模式
MVC實現了前后端和數據的分離,程序的解耦合,實現了程序的可擴展性,可維護性
| Model | 模型 | 是針對數據庫層面的 | 程序調用模型,直接操作繼承model的模型對象 |
| View | 視圖 | 是針對用戶界面的數據顯示 | 模板(hmtl) |
| Controller | 控制器 | 針對業務邏輯的操作 | python程序 |
MVT
| M | Model | 模型 | 數據層 |
| V | View | 視圖 | 業務邏輯 |
| T | Template | 模板 | html |
起步
1. 認識Django
Django是一個高級的Python Web框架,它鼓勵快速開發和清潔,務實的設計。
由經驗豐富的開發人員構建,它負責Web開發的許多麻煩,因此您可以專注于編寫應用程序,而無需重新創建輪子。
它是免費的和開源的。
被官方稱之為完美主義者的Web框架。
Django可以更快地構建更好的Web應用程序并減少代碼。
官方網址:https://www.djangoproject.com/
中文文檔:http://python.usyiyi.cn/
2. Django框架的特點:
快速開發:Django的宗旨在于幫助開發人員快速從概念到完成應用程序。
安全可靠:Django認真對待安全性,幫助開發人員避免許多常見的安全錯誤。
超可伸縮性: Web上的一些最繁忙的網站利用了Django快速靈活擴展的能力。
3. Django可以使用什么Python版本?
| 1.8 | 2.7,3.2(直到2016年底),3.3, 3.4, 3.5 |
| 1.9, 1.10 | 2.7, 3.4, 3.5 |
| 1.11 | 2.7 , 3.4 , 3.5 , 3.6 |
| 2.0 | 3.5+ |
4. Django的開發版本
LTS : 長期穩定版
- 2015 April 1.8
- 2017 April 1.11
- 2019 April 2.2
5. Django安裝
作為Python Web框架,Django需要Python,在安裝Python同時需要安裝pip。
# 在線安裝Django pip3 install Django # 檢測當前是否安裝Django及版本 python3 -m django --version 1.11.7這里可以使用 -i 參數來指定鏡像源位置
6. 使用Django框架搭建項目
# 在一個目錄中執行一下命令,就會創建一個web項目目錄 django-admin startproject web# 進入到web文件夾中,執行以下命令,啟動項目 python3 manage.py runserver# 接下來就可以在瀏覽器中訪問了Django入門
創建一個應用
python3 manage.py startapp home# 以上命令會在項目文件夾中創建一個目錄home請求的流程
用戶輸入url地址發起請求,服務器接受到請求后,交給跟路由(項目同名目錄下的urls.py)
使用模板文件
URLconf路由
路由的定義
URL ==> 統一資源定位符
指得就是請求的(URL)地址
http://python.itxdl.cn/html/tutorial/
http://python.itxdl.cn/html/teachers/
可以在項目中指定請求的url地址,來交給對應的試圖函數進行解析
路由的特點
路由就是在urls中進行規則的配置
按照從上往下的順序來執行
如果匹配到,則假裝指定的視圖函數來執行
如果匹配不到,則拋出404 page not found
路由參數
路由參數就是在定義規則時,使用小括號()括起來的內容,將作為參數傳遞給視圖函數
# 路由規則 url(r'^article/(\d)$', views.article), # 視圖函數 def article(request,para):return HttpResponse('接受到的參數是:'+para)命名組,命名參數
和路由參數一樣是用來獲取url中路徑作為參數來使用
不同的是,命名組會把當前參數作為,關鍵字參數傳遞給視圖函數,
因此對應的視圖函數,必須有關鍵字參數
指定用于視圖參數的默認值
兩個路由指向同一個視圖函數
# 路由 url(r'^user/index/(?P<page>[0-9]+)/$', views.user_index), url(r'^user/index/$', views.user_index),# 視圖函數 def user_index(request,page=1):print(page)return HttpResponse('用戶列表數據的顯示'+page)Model模型
數據庫配置
定義模型
在模型中定義屬性,會生成表中的字段
django會為表增加自動增長的主鍵列,每個模型只能有一個主鍵列
如果使用選項設置某屬性為主鍵列后,則django不會再生成默認的主鍵列
屬性命名限制
不能是python的保留關鍵字
由于django的查詢方式,不允許使用連續的下劃線
定義步驟
View視圖
Django中的視圖
Django具有“視圖”的概念來封裝負責處理用戶請求和返回響應的邏輯
視圖函數或視圖簡而言之就是一個Python函數,它接受一個Web請求并返回一個Web響應
此響應可以是網頁的HTML內容,重定向或404錯誤,XML文檔或圖像。
為了將代碼放在某處,慣例是將視圖views.py放在名為的文件中,放在項目或應用程序目錄中
在視圖函數中使用模型
url 統一資源定位符
http://127.0.0.1:8000/user/abc?a=1&b=2
協議:http https file svn
ip或域名 127.0.0.1 www.itxdl.cn
端口: 80 443 8000 5000 8080
路徑: /user/abc
參數: ?a=1&b=2
模型的操作
# 1查詢 # 獲取當前模型中所有的對象數據 # 結果為一個查詢集 obs = models.Stu.objects.all() # 根據id獲取當前對象 結果 對象 ob = models.Stu.objects.get(id=1) # 注意:get方法能且只能返回一個對象 # 查多個報錯,查不到也報錯# 2添加 # 第一中方法 data = {'name':'admin','age',20} ob = models.Stu(**data) ob.save() # 第二種方法 ob = models.Stu() ob.name = 'zhangsan' ob.age = 20 ob.save()# 推薦第一種 # 3刪除 # 獲取對象.執行刪除 ob.delete())# 4更新 ob.name = 'aabb' ob.save())增刪改查
用戶管理
先定義一個視圖函數 顯示添加表單
表單吧數據提交到 執行數據添加的函數中
完成后跳轉到 用戶列表的視圖函數中
刪除鏈接提交到 一個執行用戶刪除的視圖函數中k,完成后跳轉列表頁面
編輯鏈接提交到 一個顯示用戶數據的修改表單中
修改表單吧數據 提交到執行數據更新的視圖函數中
這6個步驟對應6個路由
# 用戶數據的管理 url(r'stu/index$',views.stu_index,name='stu_index'), # 執行用戶的添加 url(r'stu/insert$',views.stu_insert,name='stu_insert'), # 顯示添加的表單 url(r'stu/add$',views.stu_add,name='stu_add'), # 執行用戶的刪除 url(r'stu/del$',views.stu_del,name='stu_del'), # 用戶的編輯表單 url(r'stu/edit$',views.stu_edit,name='stu_edit'), # 執行用戶數據的更新 url(r'stu/update$',views.stu_update,name='stu_update'),生成遷移文件時,還沒有吧應用添加到配置文件中?
如果已經生成遷移文件,則直接執行遷移就可以,
另外注意,生成的遷移文件不要輕易刪除
模型定義
class User(models.Model):pass在這里已經說了
模型更改問題
如果模型已經創建好了一個表,你再模型中在增加一個字段,在生成遷移文件的時候就會報出
新增的一個字段時注意,如果當前新增的字段不允許為空,并且沒有設置默認值,
則會在生成遷移時
翻譯過來是:
就是說,你加了一個字段,還說不能為空,然后那我之前還有挺多數據呢,這可咋整啊 您還想添加一個非空字段,還沒有默認,是不是傻?選擇一個修復吧,趕緊的:1)提供一個一次性的值2)退出,修改當前新增字段1. 設置默認值2. 允許為空就算你表中沒有數據,他也會這樣問,以為他傻,他不知道你有沒有數據,他也不能知道,也不需要知道
Django學習中遇到的問題(1)django migration No migrations to apply
Template模板
模板概念
作為Web 框架,Django 需要一種很便利的方法以動態地生成HTML。最常見的做法是使用模板。
模板包含所需HTML 輸出的靜態部分,以及一些特殊的語法,描述如何將動態內容插入。
模板語法
1.變量
-
變量輸出語法{{ var }}
-
當模版引擎遇到一個變量,將計算這個變量,然后將結果輸出
-
變量名必須由字母、數字、下劃線(不能以下劃線開頭)和點組成
-
當模版引擎遇到點("."),會按照下列順序查詢:
- 字典查詢,例如:foo[“bar”]
- 屬性或方法查詢,例如:foo.bar
- 數字索引查詢,例如:foo[bar]
-
如果變量不存在, 模版系統將插入’’ (空字符串)
-
在模板中調用方法時不能傳遞參數
2.標簽
- 語法{ % tag % }
- 作用
- 在輸出中創建文本
- 控制循環或邏輯
- 加載外部信息到模板中
for標簽
{ % for ... in ... % }循環邏輯 { % endfor % }if標簽
{ % if ... % }邏輯1 { % elif ... % }邏輯2 { % else % }邏輯3 { % endif % }comment標簽
{ % comment % }多行注釋 { % endcomment % }include:加載模板并以標簽內的參數渲染
{ % include "base/index.html" % }url:反向解析
{ % url 'name' p1 p2 % }csrf_token:這個標簽用于跨站請求偽造保護
{ % csrf_token % }Django框架自帶的后臺
在瀏覽器訪問 admin
http://127.0.0.1:8000/admin/
需要登錄,因此要創建一個超級用戶
在命令行執行下一個命令進行創建
python3 manage.py createsuperuser
重新啟動服務后 ,使用創建的用戶進行后臺的登錄
配置settings.py文件,配置語言和時區
總結
以上是生活随笔為你收集整理的Django笔记01-基础:一个完美主义的web框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GOOGLE本地搜索
- 下一篇: 微信科室预约挂号小程序