1.Mysql数据库:
Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app:
django-admin startapp UserModel
这个是和下面的配置文件setting.py中添加的名字相匹配
要提前建好user数据库
修改setting文件
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'UserModel',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',#或者mysql.connector.django
'NAME': 'user',
'USER': 'root',
'PASSWORD': '1234',
'HOST':'localhost',
'PORT':'3306',
}
}
修改 userModel/models.py 文件,以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段:
class Test(models.Model):
name=models.CharField(max_length=20)
age=models.IntegerField()
sex=models.CharField(max_length=10,default=20)
在终端运行如下命令
python manage.py migrate # 创建表结构
python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate TestModel # 创建表结构
前端界面
hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>欢迎登陆用户管理系统</h1>
<a href="/addUser">添加用户</a><br>
<a href="/findall" >查询用户</a>
</body>
</html>
显示全部用户的findAll.html界面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table >
<tr>
<td>姓名</td>
<td>性别</td>
<td>年龄</td>
<td>操作</td>
</tr>
{% for item in list %}
<tr>
<td>{{item.name}}</td>
<td>{{item.sex}}</td>
<td>{{item.age}}</td>
<td> <a href="/editUserContext?id={{item.id}}">编辑</a>/<a href="/delUser?id={{item.id}}">删除</a></td>
</tr>
{%endfor%}
</table>
</body>
</html>
添加用户的界面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加用户</title>
</head>
<body>
<form method="post" action="/editUser/">
姓名<input type="text" name="name"><br>
年龄<input type="text" name="age"><br>
性别<input type="text" name="sex"><br>
<input type="submit" value="提交">
</form>
{% if data %}
<h3>成功保存到数据库</h3>
{%endif%}
</body>
</html>
编辑用户的界面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加用户</title>
</head>
<body>
<form method="post" action="editUser?id={{id}}">
姓名<input type="text" name="name" value="{{name}}"><br>
年龄<input type="text" name="age" value="{{age}}"><br>
性别<input type="text" name="sex" value="{{sex}}"><br>
<input type="submit" value="提交">
</form>
{% if data %}
<h3>成功保存到数据库</h3>
{%endif%}
</body>
</html>
uls.py文件
from django.urls import path
from MyQian import testdb
from django.contrib import admin
urlpatterns = [
path(r'admin/',admin.site.urls),
path(r'',testdb.index),
path(r'addUser/',testdb.addUser),
path(r'findall/',testdb.findAll),
path(r'delUser',testdb.delUser),
path(r'editUserContext',testdb.editUserContext),
path(r'editUser',testdb.editUser)
]
新建包MyQian,在其下创建testdb.py文件
from UserModel.models import Test
from django.shortcuts import render
from django.http import HttpResponseRedirect
def index(request):
return render(request,'hello.html')
# 数据库操作
def addUser(request):
if request.method=="POST":
name=request.POST.get('name','')
sex=request.POST.get('sex','')
age=request.POST.get('age','')
test1 = Test(name=name,age=age,sex=sex)
test1.save()
findAll(request)
return HttpResponseRedirect("/findall")
return render(request,'addUser.html')
def findAll(request):
inforList=[]
# 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
list = Test.objects.all()
# filter相当于SQL中的WHERE,可设置条件过滤结果
#response2 = Test.objects.filter(id=1)
# 获取单个对象
#response3 = Test.objects.get(id=1)
# 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;
#Test.objects.order_by('name')[0:2]
# 数据排序
#Test.objects.order_by("id")
# 上面的方法可以连锁使用
#Test.objects.filter(name="runoob").order_by("id")
# 输出所有数据
for var in list:
context={}
context['name']=var.name
context['age']=var.age
inforList.append(context)
return render(request,'findAll.html',{'list':list})
def editUserContext(request):
getId=request.GET['id']
context={}
user=Test.objects.get(id=getId)
context['name']=user.name
context['sex']=user.sex
context['age']=user.age
context['id']=user.id
return render(request,'editUser.html',context)
def editUser(request):
getId=request.GET['id']
user = Test.objects.get(id=getId)
user.name=request.POST.get('name','')
user.sex=request.POST.get('sex','')
user.age=request.POST.get('age','')
user.id=getId
user.save()
return HttpResponseRedirect("/findall")
def delUser(request):
getId=request.GET['id']
test=Test.objects.get(id=getId)
test.delete()
return render(request,'findAll.html')
结束