基本准备
模型使用步骤
模块(app --> models.py)中创建目标类(数据库中的关系表)--> 接口管理(dbOperatiob --> urls.py)中创建访问连接(浏览器中的访问地址)--> 业务逻辑(app --> views.py)中实现用到的函数(具体对数据库的操作)
创建目标类(只需首次创建,后根据各操作需求再修改什么的,如无需求,则无需修改)
class Poet(models.Model):
p_name = models.CharField(max_length=10, unique=True, verbose_name='姓名')
p_sex = models.BooleanField(default=1, verbose_name='性别')
p_age = models.IntegerField(default=66, verbose_name='年龄')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
operate_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
创建接口访问地址
from app import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url('create_poet/', views.create_poet),
url('update_poet/', views.update_poet),
url('delete_poet/', views.delete_poet),
]
create
from django.http import HttpResponse
from django.shortcuts import render
# 创建诗人信息
from app.models import Poet
def create_poet(request):
# 第一种方式
Poet.objects.create(p_name='李白')
# 第二种方式
poet = Poet()
poet.p_name = '杜甫'
poet.save()
# 第三种方式
# poet = Poet('李清照',33,0)
# poet.save()
return HttpResponse('创建学生方法')
注:第三种方式需要对Poet类进行初始化(记得super方法的调用,应该是因为继承类之后对属性的操作有些冲突吧,反正不super一下是会报错的)
# def __init__(self, name, sex, age, *args, **kwargs):
# super().__init__(*args, **kwargs)
# self.p_name = name
# self.p_sex = sex if sex else self.p_sex
# self.p_age = age if age else self.p_age
一个小技巧:通过设置简化省略python manage.py runserver命令的执行
此时即可通过点击下拉框旁边的绿色小三角代替原来的指令功能
进入浏览器访问验证
想了一下,应该是添加目标类之后需要需要进行数据迁移。数据库中才会有数据关系表,才能进行数据操作。
进入数据库中查看
update
决定将李白的名字改为太白,李清照的年龄改为二八年华
def update_poet(request):
# 第一种
# poet = Poet.objects.filter(pk=1).first()
# poet.p_name = '太白'
# poet.save()
# 第二种
Poet.objects.filter(id=3).update(p_age = 16)
return HttpResponse('更新诗人信息')
通过浏览器访问实现修改
查看数据库验证是否修改成功
不知道为什么,Navicat突然一直闪退,就换了SQLyog做验证。
delete
删除杜甫的信息
def delete_poet(request):
Poet.objects.filter(pk=2).first().delete()
return HttpResponse('删除诗人信息')
通过浏览器访问删除之后进入数据库验证