首先安装 pip install mysqlclient
1\启动MySQL服务
2.1\创建数据库(用MYSQL自带工具):toraida
2.2\Django连接数据库:
在settings.py文件中进行配置, 找到DATABASES={
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'toraida', #数据库名字
'USER': 'root',
'PASSWORD': 'root123',
'HOST': '127.0.0.1', #那台机器的ip
'PORT': 3306,
}
}
3\Django如何CRUD-r表:
在models.py文件中编写一个类
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
上面在models中的python代码会被翻译为下面的SQL给送过去(下面仅仅是翻译SQL,不需要插入)
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int
)
再在最下面的终端中输入下面两行代码: (这两行代码老重要了,每次改完table都要运行一下)
python manage.py makemigrations
python manage.py migrate
(别忘了在settings里注册app)
突然感慨:库中有表, 表中有列, 列中有行, 此乃SQL也.
注意! 在修改表中列的时候, 如果想要添加, 必须要在后面括号添加默认值, 不然他也不知道要帮你填啥.
案例之用户管理(增と删)
urls:
path('exp1show/', views.exp1),
path('exp2add/', views.exp2),
path('exp3del/', views.exp3),
models:
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
views:
def exp1(req):
# 1\获取数据库中所有的用户信息
datalist = models.UserInfo.objects.all()
return render(req, "exp1.html", {"list": datalist})
def exp2(req):
if (req.method == "GET"):
return render(req, 'exp2.html')
elif (req.method == "POST"):
print(req.POST)
name = req.POST.get("user")
psw = req.POST.get("psw")
age = req.POST.get("age")
print(name)
models.UserInfo.objects.create(name=name, password=psw, age=age)
return render(req, 'exp2.html')
def exp3(req):
dele = req.GET.get("nid")
models.UserInfo.objects.filter(id=dele).delete()
return redirect("/exp1show/")
exp1.html:(展示列表)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>info列表</h1>
<table border="1">
<thead>
<tr>
<th>尝试1</th>
<th>尝试头2</th>
<th>尝试3</th>
<th>操作</th>
</tr>
</thead>
{% for obj in list %}
<thead>
<tr>
<td>{{ obj.name }}</td>
<td>{{ obj.age }}</td>
<td>{{ obj.password }}</td>
<td><a href="http://127.0.0.1:8000/exp3del/?nid={{ obj.id }}">删除</a></td>
</tr>
</thead>
{% endfor %}
</table>
</body>
</html>
exp2.html:(添加用户)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>添加用户</h1>
<form method="post" action="/exp2add/">
{% csrf_token %}
<input type="text" name="user" placeholder="请在此键入您的用户名">
<input type="text" name="psw" placeholder="请在此键入您的密码">
<input type="text" name="age" placeholder="请在此键入您的age">
<input type="submit" value="提交">
</form>
</body>
</html>
exp3没有html, 直接通过传递GET来实现删除用户(我目前的知识要传递POST只能用表单)