目录
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
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- head>
- <body>
- <h1>Test is Successful!h1>
- body>
- html>
语法:类名.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')
访问页面:

访问数据库:



可看到是否插入成功。
语法:类名.objects.filter(删除条件).delete()
示例:
Student.objects.filter(id=1).delete()
这里的filter相当于sql语句中的where。
语法:类名.objects.all().delete()
示例:
Student.objects.all().delete()
结果:


- 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)

- obj = Employees.objects.filter(emp_id=10010)
- print(obj)
- obj = Employees.objects.filter(emp_id=10010).first()
- obk = Department.objects.all().first()

- 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')
项目需求:
思路:
先写一个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
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>INFOLISTtitle>
- head>
- <body>
- <h1>INFO列表h1>
- <table border="1">
- <thead>
- <tr>
- <th>IDth>
- <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>
网页:

数据库:

获取成功!
思路:
添加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
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>ADDtitle>
- 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>
演示:


数据库

优化一下:
在列表页面加上添加跳转按钮
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>INFOLISTtitle>
- head>
- <body>
- <h1>INFO列表h1>
- <a href="/info/list/add/">添加a>
- <table border="1">
- <thead>
- <tr>
- <th>IDth>
- <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>
网页:

思路:
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
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>INFOLISTtitle>
- head>
- <body>
- <h1>INFO列表h1>
- <a href="/info/list/add/">添加a>
- <table border="1">
- <thead>
- <tr>
- <th>IDth>
- <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/")
访问:
点击操作栏,即可删除数据并返回当前列表界面

等待后期更简单的方法。