Django(part22)--创建数据对象

学习笔记,仅供参考,有错必纠



数据库的操作(CRUD操作)


CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)


管理器对象


每个继承自 models.Model 的模型类,都会有一个objects对象被同样继承下来。这个对象叫管理器对象,数据换的增删改查可以通过模型的管理器实现。


创建数据对象


Django使用一种直观的方式把数据库表中的数据表示成Python对象,创建数据中每一条记录就是创建一个数据对象

  • 创建方法1
Entry.objects.create(属性1=1, 属性2=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 = Entry()
obj.属性=值
obj.save()
//举个例子
abook = models.Book()
abook.title='R语言'
abook.pub='中国电力出版社'
abook.save()

举个例子


我们用以前的BLOG数据库和模型创建的工程mywebsite_db来完成这个例子。

首先我们在bookstore下创建一个urls.py文件,并敲入以下代码:

from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'^$', views.bookHome),
    re_path(r'^add/$', views.addBook),
]

在bookstore应用的views.py模块中加入以下代码:

from django.shortcuts import render
from 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 admin
from 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!

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/106869501