Django开发操作数据库更简单,内部提供了ORM框架
ORM的流程
ORM,全称 Object Relational Mapping (对象关系映射),通过 ORM 我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。通过把表映射成类,把行作实例,把字段作为属性, ORM 在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。
使用 ORM 有许多优点
我们需要安装第三方模块
pip install mysqlclient
ORM可以帮助我们做两件事:
create database 名称 default charset utf8 collate utf8_general_ci
在settings.py中DATABASES中修改
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'dbname',
'USER' : 'root',
'PASSWORD' : '',
'HOST' : '',
'PORT' : '',
}
}
models.py中创建类
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
python3 manage.py makemigrations
python3 manage.py migrate
注意:app需要提前注册
在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:
age = models.IntegerField(default=2)
data = models.IntegerField(null=True,blank=True)
以后在开发中如果想要对表结构进行调整:
python3 manage.py makemigrations
python3 manage.py migrate
表名.objects.create(字段="")
使用delete()函数删除
表名.objects.filter(过滤条件).delete() 删除过滤条件
表名.objects.all().delete() 删除整个表
all()函数整个表 获取的是QuerSet类型 [对象,对象,对象]
表名.objects.all()
获取第一条数据[对象]
表名.objects.filter(id=1).first()
更新数据
表名.objects.filter(id=2).update(age=999)
表名.objects.all().update(password=999)
表名.objects.filter(name="张三").update(age=999)
1.展示用户列表
2.添加用户
3.删除用户
list.html列出用户信息
#list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户列表</title>
</head>
<body>
<h1>用户列表</h1>
<a href="/add/">用户添加</a>
<table border="1">
<thead>
<tr>
<th>id</th>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for obj in datelist %}
<tr>
<td>{{ obj.id }}</td>
<td>{{ obj.name }}</td>
<td>{{ obj.password }}</td>
<td>{{ obj.age }}</td>
<td>
<a href="http://127.0.0.1:8000/delete/?nid={{ obj.id }}">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
add.html添加用户页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加用户</title>
</head>
<body>
<h1>用户添加</h1>
<form method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="password" name="pwd" placeholder="密码">
<input type="text" name="age" placeholder="年龄">
<input type="submit" value="提交">
</form>
</body>
</html>
用户信息视图函数
def list(request):
date_list = UserInfo.objects.all()
return render(request,'list.html',{"datelist":date_list})
添加用户用户视图函数
def add(request):
if request.method == "GET":
return render(request,'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("/list/")
删除用户视图函数
def delete(request):
nid = request.GET.get('nid')
UserInfo.objects.filter(id=nid).delete()
return redirect("http://127.0.0.1:8000/list")
用户添加
人生漫漫其修远兮,网安无止境。
一同前行,加油!