python高级编程期末测试
别看我挣的少,但是我省的多,昨天法拉利又省下两百多万。
一、通过创建自己类来实现增删改查
我们已经利用模型实现单表的增删改查了 现在 我们不想使用模型来操作数据库
我们可以自己定义模型
那么 如何通过自己创建的类实现增删改查
1.增加代码展示:
from django.test import TestCase
# Create your tests here.
import pymysql
# 我们已经利用模型实现单表的增删改查了 现在 我们不想使用模型来操作数据库
# 我们可以自己定义模型
class Stu:
def __init__(self,sid,sname,ssex):
self.sid=sid
self.sname=sname
self.ssex=ssex
class StuDao:
def __init__(self):
# 建立连接
self.con=pymysql.connect(host="localhost",user="root",password="123456",port=3306,database="jtxy")
def add(self,name,sex):
# 得到操作数据库的游标对象
cur=self.con.cursor()
# 执行insert sql %s表示字符串
cur.execute("insert into stu values('%s','%s',null)"%(name,sex))
# 提交sql
self.con.commit()
# 关闭连接释放内存
self.con.close()
我们修改一下视图函数中的增加内容 将原来的模型替换为我们自己定义的类
def addStu(request):
#数据库在哪儿 数据库名 用户名 密码
name=request.POST.get("sname")
sex=request.POST.get("ssex")
dao=StuDao()
dao.add(name,sex)
#stu=Student.objects.create(sname=name,ssex=sex)
# stu=Student(sname=name,ssex=sex)
#stu.save()
return render(request,"add_stu.html")
点击重新运行 我们输入试一下能不能运行
添加成功
2.查询代码展示:
def findStudent(self):
# 得到操作数据库的游标对象
cur = self.con.cursor()
cur.execute("select sid,sname,ssex from stu")
# 获取学生表的所有记录列表studentsList[[1,jhw,nan],[2,yy1,nv]]
studentList=cur.fetchall()
stuList=[]
for lst in studentList:
stuList.append(Stu(lst[0],lst[1],lst[2]))
# 关闭连接释放内存
self.con.close()
return stuList
同理 我们修改一下视图函数中的查询内容 将原来的模型替换为我们自己定义的类
def findStu(request):
# 从表中获取所有数据
# students=Student.objects.all()
# {表示把数据带到网页上}
dao=StuDao()
students=dao.findStudent()
return render(request, "show_stu.html",{"students":students})
我们点击查询 发现页面依旧还在 说明可以查询
3.删除代码展示:
def deleteById(self,id):
# 得到操作数据库的游标对象
cur = self.con.cursor()
cur.execute("delete from stu where sid=%d"%(int(id)))
# 提交sql
self.con.commit()
# 因为删除以后 还要返回查询结果 所以我们在这里不关闭连接 在查询处关闭即可
# 关闭连接释放内存
# self.con.close()
同理 我们修改一下视图函数中的删除内容 将原来的模型替换为我们自己定义的类
def deleteStuById(request):
id=request.GET.get("id")
dao=StuDao()
dao.deleteById(id)
# 再查询一遍
students = dao.findStudent()
# Student.objects.filter(sid=id).delete()
# 从表中获取所有数据
# students=Student.objects.all()
# {表示把数据带到网页上}
return render(request, "show_stu.html",{"students":students})
我们点击删除 删除成功
4.修改代码展示:
1)回显
def findStudentById(self,id):
# 得到操作数据库的游标对象
cur = self.con.cursor()
cur.execute("select sid,sname,ssex from stu where sid=%d" %(int(id)))
# 获取学生表的一条记录[[1,jhw,nan]
lst=cur.fetchone()
stu=Stu(lst[0],lst[1],lst[2])
# 关闭连接释放内存
self.con.close()
return stu
同理 我们修改一下视图函数中的根据id查找内容 将原来的模型替换为我们自己定义的类
def findStuById(request):
id = request.GET.get("id")
dao=StuDao()
stu=dao.findStudentById(id)
# stu=Student.objects.filter(sid=id).first()
# {表示把数据带到网页上} 所以我们创建一个网页
return render(request, "updateStu.html", {"students": stu})
我们点击修改 可以看到 成功回显
2)修改
def updateStuById(self,id,name,sex):
# 得到操作数据库的游标对象
cur = self.con.cursor()
cur.execute("update stu set sname='%s',ssex='%s' where sid=%d" % (name,sex,int(id)))
# 提交sql
self.con.commit()
修改视图函数
def updateStu(request):
sid=request.POST.get("sid")
sname=request.POST.get("sname")
ssex=request.POST.get("ssex")
# 创建模型
# stu=Student.objects.filter(sid=sid).first()
# stu.sname=sname
# stu.ssex=ssex
# stu.save()
dao=StuDao()
dao.updateStuById(sid,sname,ssex)
students = Student.objects.all()
# {表示把数据带到网页上}
return render(request, "show_stu.html", {"students": students})
我们修改一下内容 将yyq修改为yangkoukou
二、下面我们讲一些标签
1.标签<ul> <li> </li> </ul> :无序列表
2.标签<ol> <li> </li> </ol> :有序列表
<!--<ul> 无序列表-->
<ul>
<li>济南</li>
<li>淄博</li>
<li>潍坊</li>
<li>济宁</li>
</ul>
<!--<ol> 有序列表-->
<ol>
<li>济南</li>
<li>淄博</li>
<li>潍坊</li>
<li>济宁</li>
</ol>
3.添加图片:
<img src="/static/image_2.jpg">
此时我们可能会看不到图片内容 因为我们的django不认识这个图片 所以我们要配置一下
STATIC_URL='static/'
# 指定静态文件夹
STATICFILES_DIRS=[
BASE_DIR / "static"
]
我们点击查看网页 就可以看到图片了
4.<div> </div>块标记
<!--块(矩形)标记 加个边框-->
<div style="border: 1px;border-style: solid;width: 100px;height: 300px">
内容内容内容内容
内容内容内容内容
内容内容内容内容
</div>