django的ORM操作 刪除和編輯實現詳解

2022-09-26 19:24:12 字數 3224 閱讀 5599

向server端傳送資料

有2中方法,1 是 通過url 位址, 2 是通過路徑

向server端傳引數方式

1,通過資料

2, 通過路徑

# url(r'blog/(\d)')

刪除功能:

在url檔案中,建立乙個delbook路徑, 通過url的位址拿到id實現刪除

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^$',views.index),#指定乙個根目錄,也指向index頁面

url(r'^index/$',views.index),

url(r'^addbook/$',views.addbook),

url(r'^delbook/$',views.delbook), -------------------------------------------del刪除功能,對應檢視函式

#(\d+)分組後,作為引數傳給editorbook函式,editorbook(request,1或2 等等)

url(r'^editorbook/(\d+)',views.editorbook),

]在index.html 頁面中,點選刪除按鈕,在href 加上?id=}要刪除的書籍,

在get請求時,url加上刪除時點選到的id,獲取id,就可以刪除#}

在刪除一條記錄後,頁面的順序是錯亂,在前端顯示的是資料庫的id,用forloop.counter 預設從1開始迴圈顯示,與資料庫的id無關,

}title

css/bootstrap.css/' %}" rel="external nofollow" >

id書名

**出版日期

作者出版社

分類操作

}#} }--------------------按照順序顯示,}}

}}}}

d在views檔案中,編輯delbook函式,

django裡的刪除和編輯,前提都是 要先找到,利用filter()方法,條件是id或者是name,等都可以,

步驟1,用get的方法,從url路徑中拿到id,

步驟2,對資料庫的id和要url裡獲取到的id,對應,就執行delete()方法,就刪除指定的記錄,資料庫也會減少一條記錄,

#刪除和修改,都是要先找到記錄(物件)

def delbook(request):

#先過濾,加上過濾的條件,然後用delete()

#向server端傳引數方式

#1,通過資料

#2, 通過路徑

# url(r'blog/(\d)')

#在前端頁面加上id值,}

#通過url獲取id,是get的方法,"id"是url裡的key,

id = request.get.get("id")

#前面的id是表裡的字段,把get從位址列裡獲取到的id賦值給表裡的id,就可以刪除

# book.objects.filter(id = id).delete()

return redirect('/index/')

orm的編輯功能

在url檔案中建立editorbook路徑,和對映到檢視函式,

通過訪問的路徑,拿到id,

urlpatterns = [

url(r'^admin/', admin.site.urls)pzmwbzop,

url(r'^$',views.index),#指定乙個根目錄,也指向index頁面

url(r'^index/$',views.index),

url(r'^addbook/$',views.addbook),

url(r'^delbook/$',views.delbook), -------------------------------------------delpzmwbzop刪除功能,對應檢視函式

#(\d+)分組後,作為引數傳給editorbook函式,editorbook(request,1或2 等等)

url(r'^editorbook/(\d+)',views.editorbook),-----------------------------editorbook 編輯功能,對應乙個檢視函式

]編輯乙個editorbook頁面,

編輯時要獲取要編輯的是哪個物件,

比如:blog/20 ,20就是要獲取到的id

通過路徑

# url(r'blog/(\d)')

title

}#}

在views檔案中,撰寫editorbook函式,

表單的提交是post 方法,用post的方法獲取到每個輸入框的值, 然後儲存到資料庫

def editorbook(request,id):

# 2, 通過路徑

# url(r'blog/(\d)')

#通過id獲取要修改的物件,在前端中把物件的每個字段屬性給value,就可以在input框顯示要編輯的值

# book_obj = book.objects.filter(id = id)[0]

book_obj = book.objects.filter(id = id).first()

if request.method == "post":

bookname = request.post.get('bookname')

price = request.post.get('price')

date = request.post.get('date')

auth = request.post.get('auth')

publish = request.post.get('publish')

classification = request.post.get('classification')

#方法2 update修改並儲存資料 ,name 是資料庫的字段,bookname是前端form表單裡 的name屬性值,把輸入框裡獲取到的值給資料庫的字段進行儲存,

book.objects.filter(id = id).update(name = bookname,price = price, date = date, auth = auth , publish = publish, classification = classification)

return redirect('/index/')

return render(request,'editorbook.html',)

本文位址:

django中ORM的事務操作

在django的orm中,有兩種使用事務的方式 注意,mysql需要是innodb引擎 from django.db import transaction transaction.atomic def viewfunc request 下面的 在乙個事務中執行,一但出現異常,整個函式中所有的資料庫操...

django中orm的簡單操作

from django.db import models create your models here.from django.db import models create your models here.class author models.model nid models.autofie...

django的orm操作篇(基礎篇)

獲取個數 models.tb1.objects.filter name seven count 大於,小於 models.tb1.objects.filter id gt 1 獲取id大於1的值 models.tb1.objects.filter id gte 1 獲取id大於等於1的值 model...