学习笔记,仅供参考,有错必纠 数据库的操作(CRUD操作) CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete) 管理器对象 每个继承自 models.Model 的模型类,都会
学习笔记,仅供参考,有错必纠
数据库的操作(CRUD操作)
CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)
管理器对象
每个继承自 models.Model 的模型类,都会有一个objects对象被同样继承下来。这个对象叫管理器对象,数据换的增删改查可以通过模型的管理器实现。
创建数据对象
Django使用一种直观的方式把数据库表中的数据表示成Python对象,创建数据中每一条记录就是创建一个数据对象
- 创建方法1
//举个例子
models.Book.objects.create(title = "django", pub = "清华")
返回值为已经创建完成的实体对象
- 创建方法2
创建 Entry 实体对象,并调用 save() 进行保存
obj = Entry(属性=值,属性=值)obj.属性=值
obj.save()
//举个例子
abook = models.Book(title='Python', pub='清华大学出版社')
abook.save()
无返回值,保存成功后,obj对象会被重新赋值
- 创建方法3
obj.属性=值
obj.save()
//举个例子
abook = models.Book()
abook.title='R语言'
abook.pub='中国电力出版社'
abook.save()
举个例子
我们用以前的BLOG数据库和模型创建的工程mywebsite_db来完成这个例子。
首先我们在bookstore下创建一个urls.py文件,并敲入以下代码:
from django.urls import re_pathfrom . import views
urlpatterns = [
re_path(r'^$', views.bookHome),
re_path(r'^add/$', views.addBook),
]
在bookstore应用的views.py模块中加入以下代码:
from django.shortcuts import renderfrom django.http import HttpResponse
from . import models
# Create your views here.
def bookHome(request):
return HttpResponse("<h1>Welcome to BookStore!</h1>")
def addBook(request):
if request.method == 'GET':
title = request.GET.get('title', 'noname')
publish = request.GET.get('title', 'nopublisher')
models.Book.objects.create(title = title, pub = publish)
return HttpResponse("<h1>Good!</h1>")
接下来,我们在主urls.py文件中敲入以下代码:
from django.contrib import adminfrom django.urls import path
from django.urls import re_path
from django.conf.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
re_path(r'^book/', include('bookstore.urls'))
]
我们再回顾一下等下要被添加数据的bookstore_book表:
mysql> desc bookstore_book;+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(30) | NO | | NULL | |
| pub | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
mysql> select * from bookstore_book;
Empty set (0.01 sec)
现在我们开启服务,并向http://127.0.0.1:8000/book/发起请求:
再向http://127.0.0.1:8000/book/add?title=Djangoweb开发实战&pub=清华大学出版社发起请求
再次查看mywebdb数据库中的bookstore_book表:
mysql> select * from bookstore_book;+----+-------------------+----------------+
| id | title | pub |
+----+-------------------+----------------+
| 1 | Djangoweb开发实战 | 清华大学出版社 |
+----+-------------------+----------------+
1 row in set (0.00 sec)
OK!