簡而言之,orm就是物件導向語言使用關係型資料庫的中轉站。orm能使開發人員專注於業務邏輯,減少開發人員的負擔,但是orm的缺點也很明顯,效率不高並且無法實現複雜的sql功能。orm不能完全替代sql。
from django.db import models
# create your models here.
class user(models.model):
username = models.charfield(max_length=32) # charfield生成資料庫的varchar型別。
password = models.charfield(max_length=128)
然後執行資料庫遷移命令:
python manage.py migrate #資料庫遷移。
執行上面兩條命令之後的結果大概如下所示。
然後在資料庫中新增兩條資料。
def index(request): # index函式
obj = models.user.objects.all() # 獲取資料庫所有資料
for i in obj:
print(i.username, i.password) # 列印資料庫中的資料
return render(request, "index.html")
然後進入index頁面,重新整理頁面。就可以看到在控制台有如下的輸出。
當然,我們也可以獲取指定的資料,**如下:
def index(request): # index函式
obj = models.user.objects.all() # 獲取資料庫所有資料
for i in obj:
print(i.username, i.password) # 列印資料庫中的資料
ret = models.user.objects.get(username="zy") # get方法獲取一條資料。
注意,get方法獲取不到資料以及獲取到多條資料的時候報錯。我們有另外的方法filter。它可以獲取多條資料。**如下。
def index(request): # index函式
obj = models.user.objects.all() # 獲取資料庫所有資料
for i in obj:
print(i.username, i.password) # 列印資料庫中的資料
# ret = models.user.objects.get(username="zy") # get方法獲取乙個物件。
ret = models.user.objects.filter(password="123") # filter方法獲取多個資料。如果資料不存在,那麼返回空列表。
print(ret[0].username)
print(ret[1].username)
return render(request, "index.html")
來,看一下控制台的輸出。
def login(request): # login函式
if request.method == "get": # 前端如果是get請求
return render(request, 'login.html') # 返回html頁面。
elif request.method == "post": # 前端如果是post請求
username = request.post.get("username") # 獲取post請求中的username值
password = request.post.get("password") # 獲取密碼值
ret = models.user.objects.filter(username=username, password=password)
# if username == "zy" and password == "12345":
if ret:
return redirect("/index/")
else: # 如果使用者名稱或者密碼錯誤,返回登入頁面
return render(request, "login.html")
def index(request): # index函式
return render(request, "index.html")
現在,我們的登入頁面傳送的資料就可以在資料庫中查詢了。
_______________________________補充說明______________________________________
1. 通常而言,django的model繼承自models.model;
2. 繼承自models.model的模型會自動建立乙個名為id的字段作為表的主鍵。
物件關係對映
雙向一對一對映 class card 把關係的維護交給多方物件的屬性去維護關係 c 關係的擁有方負責關係的維護,在擁有方建立外來鍵。所以用到 joincolumn cascade 設定級聯關係,這種關係是遞迴呼叫 可以是 cascadetype.persist 級聯新建 cascadetype.re...
物件關係對映
雙向一對一對映 class card 把關係的維護交給多方物件的屬性去維護關係 c 關係的擁有方負責關係的維護,在擁有方建立外來鍵。所以用到 joincolumn cascade 設定級聯關係,這種關係是遞迴呼叫 可以是 cascadetype.persist 級聯新建 cascadetype.re...
Django ORM 關係管理物件的建立
from django.db import models class book models.model title models.charfield max length 32 pub models.foreignkey publisher on delete models.cascade cla...