Python高级编程-DJango3-增删改查

Python高级编程-DJango3

失败是成功之母

1.增加

我们可以先在控制台输出一下提交的信息 简单的看一下增加 把form中的input信息发给视图函数

def addStu(request):
    name=request.POST.get("sname")
    sex=request.POST.get("ssex")
    print(name,sex)
    return render(request,"add_stu.html")

设置地址

修改 HTML文件

点击运行 输入内容并提交

查看结果

下面我们开始正式的做增加

1)创建模型

from django.db import models

# Create your models here.
# 模型就是MySQL表(ORM映射:把python的类与MySQL的表对应起来)
class Student(models.Model):
    sname=models.CharField(max_length=90)
    ssex=models.CharField(max_length=60)
    # 创建表一定要有主键
    sid=models.AutoField(primary_key=True)
    class Meta(object):
        db_table="stu"

2)在python中安装MySQL

from pymysql import install_as_MySQLdbinstall_as_MySQLdb()  # 让pymysql以 MySQLDB的运行模式和django的ORM对接运行

3)在视图函数中 把要存的值存入到模型中

视图函数再传递给MySQL 通过模型就能够把值发给MySQL


def addStu(request):
    #数据库在哪儿 数据库名 用户名 密码
    name=request.POST.get("sname")
    sex=request.POST.get("ssex")
    stu=Student.objects.create(sname=name,ssex=sex)
    # stu=Student(sname=name,ssex=sex)
    stu.save()
    return render(request,"add_stu.html")

4)根据模型手动生成脚本

首先 在settings.py加入自己的创建的模块

然后 在terminal中输入

python manage.py makemigrations 

生成SQL脚本​

5)根据生成的脚本 在mysql中创建表

python manage.py migrate

6)增加

做完上面的操作以后 我们点击重新运行

在网页打开时 我们要先显示出网页

http://127.0.0.1:8000/showStu/

输入数据 点击提交

查看结果 增加就做好啦

2.查询

查询就是网页通过调用视图函数 视图函数调用模型获取数据 视图函数再把模型的值带到页面上 显示数据

首先 我们先创建一个主页 但是在创建主页时 默认django不支持iframe 所以我们需要添加以下配置

X_FRAME_OPTIONS = 'SAMEORIGIN'

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--<table>标记 表示显示表格 width相对于浏览器100%-->
<table border="1" width="100%" height="100%">
    {# 一对<tr>表示一行 一对<td>表示一列 #}
    <tr height="15%">
        <td colspan="2">top</td>
    </tr>
    <tr>
        <td width="20%">
            <!--a 是超链接 表示连接到其他网页或地址-->
            <!--target="main"是容器名 指的是把网页显示到容器中-->
           <a href="/showStu/" target="main">增加</a><br>
           <a href="/findStu/" target="main">查询</a>
        </td>
        <!--iframe是一个显示网页的容器 src是网页地址 name是容器名称-->
        <td><iframe src="/showStu" width="100%" height="100%" name="main"></iframe></td>
    </tr>
</table>

</body>
</html>

网页做出来以后 我们开始做查询

1)网页调用视图函数

2)视图函数调用模型获取数据

3)视图函数把模型的值带到页面上 显示数据

给视图函数一个地址

下面我们编辑一下show_stu.html中的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1" width="100%">
<tr><td>学生编号</td><td>学生姓名</td><td>学生性别</td></tr>
{% for stu in students %}
    <!--{ {} }表示取值-->
<tr><td>{{ stu.sid }}</td><td>{{ stu.sname }}</td><td>{{ stu.ssex }}</td></tr>

{% endfor %}
</table>
</body>
</html>

3.删除

1)页面中写删除操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1" width="100%">
<tr><td>学生编号</td><td>学生姓名</td><td>学生性别</td><td>操作</td></tr>
{% for stu in students %}
    <!--{ {} }表示取值-->
<tr>
    <td>{{ stu.sid }}</td>
    <td>{{ stu.sname }}</td>
    <td>{{ stu.ssex }}</td>
<td><a href="deleteStuById?id={{ stu.sid }}">删除</a></td>

</tr>

{% endfor %}
</table>
</body>
</html>

2)定义视图函数

def deleteStuById(request):
    id=request.GET.get("id")
    Student.objects.filter(sid=id).delete()
    # 从表中获取所有数据
    students=Student.objects.all()
    # {表示把数据带到网页上}
    return render(request, "show_stu.html",{"students":students})

3)添加映射

path('deleteStuById/',deleteStuById)

点击删除 操作成功

4.修改(回显 修改)

1)回显

①页面中写修改操作的语句

点击某一条记录 调用视图函数 把这条记录的值显示到网页上

<td><a href="/findStuById?id={{ stu.sid }}">修改</a></td>

②定义视图函数
def findStuById(request):
    id = request.GET.get("id")
    stu=Student.objects.filter(sid=id).first()
    # {表示把数据带到网页上} 所以我们创建一个网页
    return render(request, "updateStu.html", {"students": stu})

③添加映射

④updateStu网页修改
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--form表示用来把input标记的内容进行收集 打包 发给后台的python-->

<!--action表示视图函数的地址-->
<form action="/addStu/" method="post">
    {% csrf_token %}
    学生编号<input type="text" value="{{ students.sid }}">
    <!--name表示为输入框起个名 type表示输入框的类型 input表示输入标签-->
    学生姓名<input type="text" name="sname" value="{{ students.sname }}">
    学生性别<input type="text" name="ssex" value="{{ students.ssex }}">

    <input type="submit">
</form>
</body>
</html>

此时 我们点击修改 页面跳转过来了

经过上面几步以后 我们已经完成了回显操作 回显的目的就是方便用户操作 在修改时不需要全部重新输入 下面我们开始做真正的修改(把form中input的值发给视图函数 视图函数再把值发给模型(表))

2)修改

把form中input的值发给视图函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--form表示用来把input标记的内容进行收集 打包 发给后台的python-->

<!--action表示视图函数的地址-->
<form action="/updateStu/" method="post">
    {% csrf_token %}
    学生编号<input type="text" name="sid" value="{{ students.sid }}">
    <!--name表示为输入框起个名 type表示输入框的类型 input表示输入标签-->
    学生姓名<input type="text" name="sname" value="{{ students.sname }}">
    学生性别<input type="text" name="ssex" value="{{ students.ssex }}">

    <input type="submit">
</form>
</body>
</html>

②定义视图函数
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()

    students = Student.objects.all()
    # {表示把数据带到网页上}
    return render(request, "show_stu.html", {"students": students})
③添加url映射
path('updateStu/',updateStu)

现在 我们就可以做修改了 我们将jhw修改为jhw1

修改成功

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值