目录
0、创建测试用例:
djangoproject->urls.py
from django.urls import path
from app import views
urlpatterns = [
path('index/', views.index),
path('user/list/',views.user_list),
path('user/add/',views.user_add),
path('tpl/',views.tpl),
path('news/',views.news),
path('something/',views.something),
#用户登录
path('login/',views.login),
#orm测试
path('ormtest/',views.ormtest),
]
app->models.py
from django.db import models
# Create your models here.
class UserInfo2(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
#age = models.IntegerField()
class Department(models.Model):
title = models.CharField(max_length=50)
Dep_No = models.IntegerField(default=10)
Dep_Na = models.CharField(max_length=100)
Dep_data = models.IntegerField(null=True,blank=True)
class Employees(models.Model):
emp_id = models.CharField(max_length=10)
position = models.CharField(max_length=50)
class Student(models.Model):
name = models.CharField(max_length=100)
sex = models.CharField(max_length=5)
age = models.IntegerField(default=18)
app->views.py
from app.models import Student,Employees,Department,UserInfo2
def ormtest(request):
#刷新页面测试数据表是否有操作
return render(request,'ormtest.html')
app->templates->ormtest.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Test is Successful!</h1>
</body>
</html>
1、在表中新增数据:
语法:类名.object.create(添加字段)
例如:
Student.objects.create(name="张三",age=19)
在views中写入以下测试用例:
from app.models import Student,Employees,Department,UserInfo2
def ormtest(request):
#student
#Student.objects.create(name="张三",age=19)
#Student.objects.create(name="李华",sex="男",age=17)
#Student.objects.create(name="王刚",sex="女")
#employees
#Employees.objects.create(emp_id=10010,position="技术部")
#Employees.objects.create(emp_id=10012, position="董事部")
#UserInfo2
#UserInfo2.objects.create(name="小强",password=123456)
#UserInfo2.objects.create(name="小明", password=123456)
#UserInfo2.objects.create(name="小红", password=123456)
return render(request,'ormtest.html')
访问页面:
访问数据库:
可看到是否插入成功。
2、在表中删除元素
(1)有条件删除
语法:类名.objects.filter(删除条件).delete()
示例:
Student.objects.filter(id=1).delete()
这里的filter相当于sql语句中的where。
(2)无条件,删除表中全部信息
语法:类名.objects.all().delete()
示例:
Student.objects.all().delete()
结果:
3、获取表中数据
(1)获取全部数据
data_list = Employees.objects.all()
print(data_list)
从数据表获取的数据以对象的形式封装在列表中:
想要获取对象里面的内容,可以在后面加个点来表示
print(data_list[0].id,data_list[0].emp_id,data_list[0].position)
数据过多,也可以用循环来迭代:
data_list = Employees.objects.all()
for obj in data_list:
print(obj.emp_id,obj.position)
(2)获取有条件筛选的数据
obj = Employees.objects.filter(emp_id=10010)
print(obj)
(3)获取列表中的首行数据
obj = Employees.objects.filter(emp_id=10010).first()
obk = Department.objects.all().first()
4、更新表中数据
UserInfo2.objects.all().update(password="111111")
UserInfo2.objects.filter(id=2).update(password="222222")
UserInfo2.objects.filter(name="小明").update(password="333333")
views.py
from app.models import Student,Employees,Department,UserInfo2
def ormtest(request):
#-------------------1、新建---------------------------
#student
#Student.objects.create(name="张三",age=19)
#Student.objects.create(name="李华",sex="男",age=17)
#Student.objects.create(name="王刚",sex="女")
#employees
#Employees.objects.create(emp_id=10010,position="技术部")
#Employees.objects.create(emp_id=10012, position="董事部")
#UserInfo2
#UserInfo2.objects.create(name="小强",password=123456)
#UserInfo2.objects.create(name="小明", password=123456)
#UserInfo2.objects.create(name="小红", password=123456)
#---------------------2、删除------------------------------
#Student.objects.filter(id=1).delete()
#Student.objects.all().delete()
#---------------------3、获取------------------------------
#obj = Employees.objects.filter(emp_id=10010).first()
#obk = Department.objects.all().first()
#print(obj)
#print(obk)
#---------------------4、修改------------------------------
# UserInfo2.objects.all().update(password="111111")
# UserInfo2.objects.filter(id=2).update(password="222222")
# UserInfo2.objects.filter(name="小明").update(password="333333")
return render(request,'ormtest.html')
5、测试案例:用户管理程序
项目需求:
(1)展示用户列表
思路:
先写一个url,
再写views视图函数,函数功能实现:
1、获取所有用户信息
2、HTML渲染。
models.py
class UserInfo2(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField(default=18)
urls.py
#用户管理
path('info/list/',views.info_list),
views.py
def info_list(request):
#1、获取用户数据库中所有信息
data_list=UserInfo2.objects.all()
print(data_list)
return render(request,'info_list.html',{"data_list":data_list})
info_list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>INFOLIST</title>
</head>
<body>
<h1>INFO列表</h1>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
{% for item in data_list %}
<tr>
<td>{
{ item.id }}</td>
<td>{
{ item.name }}</td>
<td>{
{ item.password }}</td>
<td>{
{ item.age }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
网页:
数据库:
获取成功!
(2)添加用户
思路:
添加url
编写视图函数
1、先发送GET请求,看到页面,输入内容
2、发送POST请求,输入内容,提交,写入数据库。
url.py
#添加用户
path('info/list/add/',views.info_list_add),
views.py
def info_list_add(request):
if request.method == "GET":
return render(request,'info_list_add.html')
#不执行if语句则请求方法为POST;获取用户提交的数据
user = request.POST.get("user")
pwd = request.POST.get("pwd")
age = request.POST.get("age")
#添加数据到数据库
UserInfo2.objects.create(name=user,password=pwd,age=age)
#自动跳转到用户列表页面
#return redirect("http://127.0.0.1:8000/info/list/")
return redirect("/info/list/")
info_list_add.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ADD</title>
</head>
<body>
<h1>添加用户</h1>
<form method="post" action="/info/list/add/">
{% 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>
演示:
数据库
优化一下:
在列表页面加上添加跳转按钮
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>INFOLIST</title>
</head>
<body>
<h1>INFO列表</h1>
<a href="/info/list/add/">添加</a>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
{% for item in data_list %}
<tr>
<td>{
{ item.id }}</td>
<td>{
{ item.name }}</td>
<td>{
{ item.password }}</td>
<td>{
{ item.age }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
网页:
(3)删除用户
思路:
1、先写url
2、再写views函数:
(1)通过url网址传递的参数,判断删除条件:
http://127.0.0.1:8000/info/list/delete?id=1
……
(2)id = request.GET。get("id")
UserInfo.objects.filter(id=id).delete()
urls.py
#删除用户
path('info/list/delete/',views.info_list_delete),
views.py
def info_list_delete(request):
id = request.GET.get('id')
UserInfo2.objects.filter(id=id).delete()
return HttpResponse("删除成功")
访问:
id为10的已经被删除
由于手动在url中编写参数过于麻烦,所以做如下改进:
info_list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>INFOLIST</title>
</head>
<body>
<h1>INFO列表</h1>
<a href="/info/list/add/">添加</a>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in data_list %}
<tr>
<td>{
{ item.id }}</td>
<td>{
{ item.name }}</td>
<td>{
{ item.password }}</td>
<td>{
{ item.age }}</td>
<td>
<a href="/info/list/delete/?id={
{ item.id }}">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
views.py
def info_list_delete(request):
id = request.GET.get('id')
UserInfo2.objects.filter(id=id).delete()
return redirect("/info/list/")
访问:
点击操作栏,即可删除数据并返回当前列表界面
(4)修改用户
等待后期更简单的方法。