第三方库准备: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.all()
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.all().update(password=999) 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
用户管理
INFO列表
| ID | 姓名 | 密码 | 年龄 |
|---|---|---|---|
| {{ obj.id }} | {{ obj.name }} | {{ obj.password }} | {{ obj.age }} |
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
用户管理
添加用户
{#
列表中增加添加用户跳转连接
3 删除用户
- URL
- 函数
def info_delete(request):
nid = request.GET.get('nid')
UserInfo.objects.filter(id=nid).delete()
return redirect("/info/list")
删除



