Django中mysql数据库增删改查方法总结(五)

表字段的操作

表字段的增加:

对于已经有数据的表,新增字段的时候,要设置默认值或者指定该字段为空。例:

models.py中

addr = models.CharFiled(max_length=32,default='China')
num = models.CharField(max_length=32,null=true)

接下来运行数据库记录+操作命令(让ORM和数据库表一一对应)

python manage.py makemigrations
python manage.py migrate

现在sql表中就多了一个addr和num字段了

表字段的删除

直接把models.py的属性删除即可。

表数据的增删改查

查:

后端
def userlist(request):

查询user表所有数据

user_queryset = models.User.objects.all()
return render(request,‘userlist.html’,{‘user_list’:user_queryset}) # 前端可以通过user_list拿到对应的数据
前端
# 模板语法之for循环 循环展示数据 可以直接敲for tab键自动补全for循环语法

{% for user_obj in user_list %}
<tr>
<td>{{ user_obj.id }}</td>
<td>{{ user_obj.name }}</td>
<td>{{ user_obj.password }}</td>
<td>{{ user_obj.addr }}</td>
<td class="text-center">
<a href="/edit_user/?id={{ user_obj.pk }}" class="btn btn-primary btn-sm">编辑</a>
<a href="/delete_user/?id={{ user_obj.id }}" class="btn btn-danger btn-sm">删除</a>
</td>
</tr>
{% endfor %}

删:

查询数据的两种方式

models.User.objects.filter() 拿到的是queryset对象
edit_obj = models.User.objects.get(id=edit_id) 拿到的就是数据对象本身(不推荐使用)

def delete_user(request):
# 获取被删除对象的id
delete_id = request.GET.get(‘id’)
# queryset自带delete方法,删除queryset里面所有的数据对象
# queryset调delete()执行的批量操作 删除的是queryset里面所有的数据
affect_rows = models.User.objects.filter(id=delete_id).delete()
print(affect_rows)
return redirect(’/userlist’)
前端
<a href="/delete_user/?id={{ user_obj.id }}" class=“btn btn-danger btn-sm”>删除

增:

方式1:新增数据操作 返回值就是当前被创建对象本身
user_obj = models.User.objects.create(name=username,password=password,addr=addr)
方式2:
user_obj = models.User(**request.POST)
user_obj.save()

改:

思路:先获取到底改哪条数据 查询该数据 渲染到前端页面供用户查看及修改
post请求中获取被修改对象的id两种方式:
1.input隐藏标签
2.action携带参数

<form action="/edit_user/?id={{ edit_obj.pk }}" method="post">
<input type="hidden" value="{{ edit_obj.pk }}" name="id">
<p>username:<input type="text" name="username" class="form-control" value="{{ edit_obj.name }}"></p>
<p>password:<input type="password" name="password" class="form-control" value="{{ edit_obj.password }}"></p>
<p>addr:<input type="text" name="addr" class="form-control" value="{{ edit_obj.addr }}"></p>
<input type="submit" class="btn btn-success">
</form>

两种修改数据的方式:

修改数据方式1

models.User.objects.filter(id=id2).update(name=username,password=password,addr=addr)

修改数据方式2

edit_obj = models.User.objects.filter(id=id2).first()
edit_obj.name = username
edit_obj.password = password
edit_obj.addr = addr
edit_obj.save()
只要是queryset对象就可以连续调用queryset对象对应的方法
models.User.objects.filter().filter().filter().filter().filter()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现连接虚拟机Django+MySQL并进行增删改查,需要以下步骤: 1. 确保虚拟机DjangoMySQL已经正确安装并启动。 2. 在Django创建一个可以进行数据库操作的应用程序,在应用程序创建模型类,定义好需要操作的字段。 3. 在MySQL创建相应的数据库和表,与Django定义的模型类对应。 4. 在Django配置数据库连接,可以在settings.py进行配置。 5. 在Django编写视图函数,实现增删改查功能。 6. 在app编写前端界面,通过ajax等方式调用Django的视图函数进行数据操作。 具体实现过程可以参考以下步骤: 1. 在虚拟机启动Django,并创建一个应用程序,例如命名为myapp。 2. 在myapp创建一个模型类,代码如下: ```python from django.db import models class User(models.Model): name = models.CharField(max_length=20) age = models.IntegerField() ``` 3. 在MySQL创建一个名为mydb的数据库,并在其创建一个名为user的表,代码如下: ```mysql CREATE DATABASE mydb; USE mydb; CREATE TABLE user ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age INT NOT NULL, PRIMARY KEY (id) ); ``` 4. 在Django的settings.py配置MySQL连接,代码如下: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb', 'USER': 'username', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 其,username和password需要替换为MySQL的用户名和密码。 5. 在myapp编写视图函数,可以实现增删改查功能,代码如下: ```python from django.shortcuts import render, HttpResponse from .models import User def add_user(request): if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') user = User(name=name, age=age) user.save() return HttpResponse('success') def delete_user(request, id): user = User.objects.get(id=id) user.delete() return HttpResponse('success') def update_user(request, id): if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') user = User.objects.get(id=id) user.name = name user.age = age user.save() return HttpResponse('success') def get_user(request, id): user = User.objects.get(id=id) return HttpResponse(f'name: {user.name}, age: {user.age}') ``` 其,add_user函数为添加用户,delete_user函数为删除用户,update_user函数为更新用户信息,get_user函数为获取用户信息。 6. 在app编写前端界面,通过ajax等方式调用Django的视图函数进行数据操作。 例如,添加用户的前端界面可以编写如下代码: ```html <form> <label for="name">name:</label> <input type="text" id="name" name="name"><br><br> <label for="age">age:</label> <input type="text" id="age" name="age"><br><br> <input type="submit" value="Submit" onclick="addUser()"> </form> <script> function addUser() { var name = document.getElementById("name").value; var age = document.getElementById("age").value; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == XMLHttpRequest.DONE) { if (xhr.status == 200) { alert('success'); } else { alert('error'); } } } xhr.open('POST', '/add_user/', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send("name=" + name + "&age=" + age); } </script> ``` 其,addUser函数通过ajax调用Django的add_user视图函数,将输入的name和age值传递给Django进行添加操作。 其他操作的前端界面类似,只需要调用不同的视图函数即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值