第三方库准备: pip install mysqlclient
ORM
ORM可以做两件事:
- 创建、修改、删除数据库中的表【无法创建数据库】
- 操作表中数据
1 创建数据库
2 Django连接数据库
首先在settings文件中修改数据库配置
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djtest',
'USER': 'root',
'PASSWORD': 'xxxx',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}
3 操作表
创建表,在models.py文件中
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
终端执行命令:
python manage.py makemigrations
python manage.py migrate
添加修改删除表 在models.py文件中添加、修改、删除对应内容后,再次执行
python manage.py makemigrations
python manage.py migrate
修改时,如果要在已有表中添加字段会出现提示
选择1,手动输入一个值对已有数据填充
或添加默认值default或设置字段允许为空
data = models.IntegerField(default=2)
size = models.IntegerField(null=True, blank=True)
操作表中数据
添加数据
from app01.models import UserInfo, Department
Department.objects.create(title="销售部")
Department.objects.create(title="IT部")
Department.objects.create(title="运营部")
UserInfo.objects.create(name='BXR', password='123', age=20)
UserInfo.objects.create(name='WXW', password='123', age=40)
删除数据
UserInfo.objects.filter(id=2).delete()
Department.objects.all().delete()
查找数据
data_list = UserInfo.objects.filter(id=1)
for obj in data_list:
print(obj.id, obj.name, obj.password, obj.age)
data = UserInfo.objects.filter(id=1).first()
print(data.id, data.name)
更新数据
UserInfo.objects.filter(name='BXR').update(password=123)
案例:用户管理
1 展示用户列表
- URL
- 函数
获取所有用户信息
HTML渲染
views.py
def info_list(request):
data_list = UserInfo.objects.all()
return render(request, 'info_list.html', {"data_list": data_list})
info_list.html
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户管理title>
head>
<body>
<h1>INFO列表h1>
<table border="2">
<thead>
<tr>
<th>IDth>
<th>姓名th>
<th>密码th>
<th>年龄th>
tr>
thead>
<tbody>
{% for obj in data_list %}
<tr>
<td>{{ obj.id }}td>
<td>{{ obj.name }}td>
<td>{{ obj.password }}td>
<td>{{ obj.age }}td>
tr>
{% endfor %}
tbody>
table>
body>
html>
2 添加用户
- URL
- 函数
GET,看到页面,输入内容
POST,提交 → 写入到数据库
views.py
def info_add(request):
if request.method == "GET":
return render(request, 'info_add.html')
user = request.POST.get("user")
pwd = request.POST.get("pwd")
age = request.POST.get("age")
UserInfo.objects.create(name=user, password=pwd, age=age)
return redirect("/info/list")
info_add.html
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户管理title>
head>
<body>
<h1>添加用户h1>
{#<form method="post" action="/info/add/">#}
<form method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="text" name="pwd" placeholder="密码">
<input type="text" name="age" placeholder="年龄">
<input type="submit" value="提交">
form>
body>
html>
列表中增加添加用户跳转连接
3 删除用户
- URL
- 函数
def info_delete(request):
nid = request.GET.get('nid')
UserInfo.objects.filter(id=nid).delete()
return redirect("/info/list")
<td>
<a href="/info/delete/?nid={{ obj.id }}">删除a>
td>
Original: https://blog.csdn.net/weixin_47781798/article/details/124817882
Author: ynliii
Title: 【python】django数据库操作
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/736722/
转载文章受原作者版权保护。转载请注明原作者出处!