python Django的模型层
Django的Model模型介绍
- 模型是项目中的数据信息源,包内含着存储数据的必要字段和行为;
- 每个模型对应数据库中的一张表,每个属性对应一个字段;
- 每个模型都是django.db.models.Model的一个Python子类;
- Django提供一套自动生成的用于数据库访问的API;
- 模型与数据库的关系是ORM关系(对象关系-映射)。
为什么要用模型?
- Model是MVC框架中重要的一部分,负责在数据库中存取数据
- 它实现了数据模型与数据库的解耦,即不需要依赖于特定的数据库
- 通过简单的配置就可以更换数据库
Model的开发流程
1、在应用的models.py 定义模型类,继承models.Model
2、把应用加入到项目settings.py 配置文件的INSTALLED_APPS中
3、生成迁移文件
python manage.py makemigrations
4、执行迁移
python manage.py migrate
5、使用模型类进行CRUD操作
- C创建
- R查询
- U更新
- D删除
定义Model模型
在模型中定义属性,会生成表中的字段
Django根据属性的类型确定一下信息:
- 当前选择的数据库支持字段的类型
- 渲染管理表单时使用的默认html控件
- 在管理站点最低限度的验证
Django会为表增加自动增长的主键列,每个模型只能有一个主键列
属性命名限制
- 不能是python的保留关键字
- 由于Django的查询方式,不允许使用连续的下划线
Model模型的实例
模型实例对象是通过object属性获取,即Django为模型类提供的管理器
object:是Manager类型的对象,用于与数据库进行交互
实例的方法:
__str__(self): 重写object方法,此方法在将对象转换成字符串时会调用
save(): 将模型对象保存到数据表中
delete(): 将模型对象从数据表中删除
Model模型的查询
创建Django项目
django-admin startproject mydemo
创建应用
python manage.py startapp myapp
mydemo 目录下创建 templates

templates 目录下创建 myapp

创建mytest数据库

纠正一下,这里ALLOWED_HOSTS=['*'] 


开发流程
数据迁移


myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):return HttpResponse("首页")
mydemo-->urls.py
from django.contrib import admin
from django.urls import path,includeurlpatterns = [#path('admin/', admin.site.urls),path("",include('myapp.urls')),
]
myapp目录创建urls.py 文件
from django.urls import path
from . import viewsurlpatterns =[path('',views.index,name='index'),
]

添加操作
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作ob = User()ob.name = "张三"ob.age = 20ob.phone = '123456789'ob.save()return HttpResponse("首页")

刷新页面

数据库更新数据
获取model对象
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User()# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save()# 删除操作mod = User.objects # 获取user的model对象user = mod.get(id=6) # 获取id值为6的数据信息print(user.name)return HttpResponse("首页")

执行删除操作
myapp-->views.py


执行修改操作
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作ob = User.objects.get(id=1)#print(ob.name)ob.name = "小刘"ob.age = 26ob.save()return HttpResponse("首页")

执行查询操作
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象ulist = mod.all() # 获取所有数据for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页")
获取name值为小刘的所有信息
ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息

获取所有年龄大于20的
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页")
获取所有年龄大于等于20的
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页")
获取所有年龄小于等于20的
ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)
按age 升序排序
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的#ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的#ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的ulist = mod.order_by("age") # 排序年龄for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页")

按age 升序排序,只获取前3条
ulist = mod.order_by("age")[:3] # 按age 升序排序,只获取前3条for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)

用户信息管理实战
1、基本结构配置
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的#ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的#ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的#ulist = mod.order_by("age") # 按age 升序排序ulist = mod.order_by("age")[:3] # 按age 升序排序,只获取前3条for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页")# 浏览用户信息
def indexUser(request):pass
# 记载添加用户信息表单
def addUser(request):pass
# 执行用户信息添加
def insertUser(request):pass
# 执行用户信息删除
def delUser(request,uid=0):pass
# 加载用户信息修改表单
def editUser(request,uid=0):pass
# 执行用户信息修改
def updateUser(request):pass
myapp--> urls.py
from django.urls import path
from . import viewsurlpatterns =[path('',views.index,name='index'),# 配置user信息操作路由path('user', views.indexUser,name="indexUser"),path('user/add', views.indexUser, name="addUser"),path('user/insert', views.indexUser, name="insertUser"),path('user/del/', views.indexUser, name="delUser"),path('user/edit/', views.indexUser, name="editUser"),path('user/update', views.indexUser, name="updateUser"),
]
2、
创建目录及文件:templates-->myapp-->user-->index.html

浏览信息代码
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的#ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的#ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的#ulist = mod.order_by("age") # 按age 升序排序ulist = mod.order_by("age")[:3] # 按age 升序排序,只获取前3条for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页")# 浏览用户信息
def indexUser(request):# try:ulist = User.objects.all()context = {"userslist":ulist}return render(request,"myapp/user/index.html",context) # 加载模板# except:# return HttpResponse("没有找到用户信息!")
# 记载添加用户信息表单
def addUser(request):pass
# 执行用户信息添加
def insertUser(request):pass
# 执行用户信息删除
def delUser(request,uid=0):pass
# 加载用户信息修改表单
def editUser(request,uid=0):pass
# 执行用户信息修改
def updateUser(request):pass
index.html代码
Title
用户信息管理
ID号 姓名 年龄 电话 添加时间 操作 {% for user in userslist %}{{ user.id }} {{ user.name }} {{ user.age }} {{ user.phone }} {{ user.addtime }} 编辑 删除 {% endfor %}
效果图

首页超链接跳转
myapp-->views.py
return HttpResponse("首页
用户信息管理")


添加浏览信息和添加信息的超链接
templates-->myapp-->user-->index.html
Title
用户信息管理
浏览信息添加信息
浏览用户信息
ID号 姓名 年龄 电话 添加时间 操作 {% for user in userslist %}{{ user.id }} {{ user.name }} {{ user.age }} {{ user.phone }} {{ user.addtime }} 编辑 删除 {% endfor %}

这里忘记修改了,导致无法跳转页面
myapp-->urls.py
from django.urls import path
from . import viewsurlpatterns =[path('',views.index,name='index'),# 配置user信息操作路由path('user', views.indexUser,name="indexUser"),path('user/add', views.addUser, name="addUser"),path('user/insert', views.insertUser, name="insertUser"),path('user/del/', views.delUser, name="delUser"),path('user/edit/', views.editUser, name="editUser"),path('user/update', views.updateUser, name="updateUser"),
]

添加用户信息表单
浏览用户信息视图
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的#ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的#ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的#ulist = mod.order_by("age") # 按age 升序排序ulist = mod.order_by("age")[:3] # 按age 升序排序,只获取前3条for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页
用户信息管理")# 浏览用户信息
def indexUser(request):try:ulist = User.objects.all()context = {"userslist":ulist}return render(request,"myapp/user/index.html",context) # 加载模板except:return HttpResponse("没有找到用户信息!")
# 记载添加用户信息表单
def addUser(request):return render(request,"myapp/user/add.html")
# 执行用户信息添加
def insertUser(request):pass
# 执行用户信息删除
def delUser(request,uid=0):pass
# 加载用户信息修改表单
def editUser(request,uid=0):pass
# 执行用户信息修改
def updateUser(request):pass

创建add.html文件:templates-->myapp-->user-->add.html
Title
用户信息管理
浏览信息添加信息
添加用户信息

执行用户信息添加
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的#ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的#ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的#ulist = mod.order_by("age") # 按age 升序排序ulist = mod.order_by("age")[:3] # 按age 升序排序,只获取前3条for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页
用户信息管理")# 浏览用户信息
def indexUser(request):try:ulist = User.objects.all()context = {"userslist":ulist}return render(request,"myapp/user/index.html",context) # 加载模板except:return HttpResponse("没有找到用户信息!")
# 记载添加用户信息表单
def addUser(request):return render(request,"myapp/user/add.html")
# 执行用户信息添加
def insertUser(request):try:ob = User()# 从表单中获取要添加的信息并封装到ob对象中ob.name = request.POST['name']ob.age = request.POST['age']ob.phone = request.POST['phone']ob.save() # 执行保存context = {"info":"添加成功!"}except:context = {"info":"添加失败!"}return render(request,'myapp/user/info.html',context)# 执行用户信息删除
def delUser(request,uid=0):pass
# 加载用户信息修改表单
def editUser(request,uid=0):pass
# 执行用户信息修改
def updateUser(request):pass


添加csrf_token令牌
templates-->myapp-->user-->add.html
Title
用户信息管理
浏览信息添加信息
添加用户信息

执行删除操作


删除视图
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的#ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的#ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的#ulist = mod.order_by("age") # 按age 升序排序ulist = mod.order_by("age")[:3] # 按age 升序排序,只获取前3条for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页
用户信息管理")# 浏览用户信息
def indexUser(request):try:ulist = User.objects.all()context = {"userslist":ulist}return render(request,"myapp/user/index.html",context) # 加载模板except:return HttpResponse("没有找到用户信息!")
# 记载添加用户信息表单
def addUser(request):return render(request,"myapp/user/add.html")
# 执行用户信息添加
def insertUser(request):try:ob = User()# 从表单中获取要添加的信息并封装到ob对象中ob.name = request.POST['name']ob.age = request.POST['age']ob.phone = request.POST['phone']ob.save() # 执行保存context = {"info":"添加成功!"}except:context = {"info":"添加失败!"}return render(request,'myapp/user/info.html',context)# 执行用户信息删除
def delUser(request,uid=0):try:ob = User.objects.get(id=uid) # 获取要删除的数据ob.delete() # 执行删除操作context = {"info":"删除成功!"}except:context = {"info":"删除失败!"}return render(request,'myapp/user/info.html',context)
# 加载用户信息修改表单
def editUser(request,uid=0):pass
# 执行用户信息修改
def updateUser(request):pass

tmplates-->myapp-->user-->index.html
Title
用户信息管理
浏览信息添加信息
浏览用户信息
ID号 姓名 年龄 电话 添加时间 操作 {% for user in userslist %}{{ user.id }} {{ user.name }} {{ user.age }} {{ user.phone }} {{ user.addtime }} 编辑删除 {% endfor %}



编辑页面
tmplates-->myapp-->user-->index.html
Title
用户信息管理
浏览信息添加信息
浏览用户信息
ID号 姓名 年龄 电话 添加时间 操作 {% for user in userslist %}{{ user.id }} {{ user.name }} {{ user.age }} {{ user.phone }} {{ user.addtime }} 编辑删除 {% endfor %}
创建edit.html: templates-->myapp-->user-->edit.html
Title
用户信息管理
浏览信息添加信息
编辑用户信息
编辑视图
myapp-->views.py
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import User# Create your views here.
def index(request):# 执行Model的操作# 添加操作# ob = User() # 实例化一个新对象# ob.name = "王五"# ob.age = 18# ob.phone = '1232332789'# ob.save() # 新对象就是添加,已存在对象则是修改# 删除操作# mod = User.objects # 获取user的model对象# user = mod.get(id=6) # 获取id值为6的数据信息# print(user.name)# user.delete() # 执行删除操作# 修改操作# ob = User.objects.get(id=1)# #print(ob.name)# ob.name = "小刘"# ob.age = 26# ob.save()# 数据查询mod = User.objects # 获取User模型的Model操作对象#ulist = mod.all() # 获取所有数据#ulist = mod.filter(name='小刘') # 获取name值为小刘的所有信息#ulist = mod.filter(age__gt=20) # 获取所有年龄大于20的#ulist = mod.filter(age__gte=20) # 获取所有年龄大于等于20的#ulist = mod.filter(age__lte=20) # 获取所有年龄小于等于20的#ulist = mod.order_by("age") # 按age 升序排序ulist = mod.order_by("age")[:3] # 按age 升序排序,只获取前3条for u in ulist:print(u.id,u.name,u.age,u.phone,u.addtime)return HttpResponse("首页
用户信息管理")# 浏览用户信息
def indexUser(request):try:ulist = User.objects.all()context = {"userslist":ulist}return render(request,"myapp/user/index.html",context) # 加载模板except:return HttpResponse("没有找到用户信息!")
# 记载添加用户信息表单
def addUser(request):return render(request,"myapp/user/add.html")
# 执行用户信息添加
def insertUser(request):try:ob = User()# 从表单中获取要添加的信息并封装到ob对象中ob.name = request.POST['name']ob.age = request.POST['age']ob.phone = request.POST['phone']ob.save() # 执行保存context = {"info":"添加成功!"}except:context = {"info":"添加失败!"}return render(request,'myapp/user/info.html',context)# 执行用户信息删除
def delUser(request,uid=0):try:ob = User.objects.get(id=uid) # 获取要删除的数据ob.delete() # 执行删除操作context = {"info":"删除成功!"}except:context = {"info":"删除失败!"}return render(request,'myapp/user/info.html',context)
# 加载用户信息修改表单
def editUser(request,uid=0):try:ob = User.objects.get(id=uid) # 获取要修改的数据context = {"user":ob}return render(request, 'myapp/user/edit.html', context)except:context = {"infp":"没有找到要修改的数据!"}return render(request,'myapp/user/info.html',context)
# 执行用户信息修改
def updateUser(request):try:uid = request.POST['id'] # 获取要修改数据的id号ob = User.objects.get(id=uid) # 查询要修改的数据# 从表单中获取要添加的信息并封装到ob对象中ob.name = request.POST['name']ob.age = request.POST['age']ob.phone = request.POST['phone']ob.save() # 执行保存context = {"info":"修改成功!"}except:context = {"info":"修改失败!"}return render(request,'myapp/user/info.html',context)

修改操作的效果图 



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!





