Django学习路11_向数据库中添加 和 获取指定条件数据
在 views.py 中添加函数 向数据库中添加数据 def add_persons(request): for i in range(15): person = Person() flag = random.randrange(100) person.p_name = "Hany_ %d"%(i) person.p_age = flag person.p_sex = flag%2 person.save() return HttpResponse("批量添加成功") 注: 使用随机数,进行添加数据(目前还是静态数据) 添加表中的元素属性值 save 进行保存 在使用 random 之前先进性导入
http://127.0.0.1:8000/app4/addpersons
添加一条数据 def add_person(request): person = Person.objects.create(p_name=‘Yizhan‘) # 使用 objects.create 进行创建一条数据 person.save() return HttpResponse("%s 创建成功"%(person.p_name)) 注: 使用 create 方法进行创建
获取数据 def get_persons(request): # persons = Person.objects.filter(p_age__gt=30) ‘‘‘age 大于 30 的 ‘‘‘ # persons = Person.objects.filter(p_age__gt=30).filter(p_age__lt=80) ‘‘‘.filter .filter 表示且‘‘‘ persons = Person.objects.exclude(p_age__lt=30).exclude(p_age__gt=80) ‘‘‘age 大于 30 的 , 小于 80 的,exclude 除了,不包含的意思 ‘‘‘ print(type(persons)) ‘‘‘<class ‘django.db.models.query.QuerySet‘> 结果集类型‘‘‘ context = { ‘persons‘:persons # 传递到前端代码中 } return render(request,‘person_list.html‘,context = context) 注: .filter(表示包含的条件) .filter(表示包含的条件).filter(表示包含的条件) 表示两个条件都需要满足,且 获取到的数据都是 QuerySet 类型,放入到值中,使用网页进行遍历 这里使用的是 render ,不是 HttpResponse p_age__gt 表示大于 p_age__lt 表示小于
templates 中person_list.html 内容 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>Person 大于 30 的 , 小于 80 的 :</h2> <h4> {% for person in persons %} <li> 姓名:{{ person.p_name }} 年龄{{ person.p_age }} </li> {% endfor %} </h4> </body> </html> 注: 在 for 循环的时候两边有 {% %} 正常单个语句时,使用的是 {{ 属性}} 最后要加上 {% endfor %} 此处的 属性为数据库表中的元素
不要忘了的点: urlpatterns = [ url(r‘addpersons‘,views.add_persons), url(r‘getpersons‘,views.get_persons), url(r‘addperson‘,views.add_person) ] 在 urls.py 中 ,进行注册
启动命令 python manage.py runserver
使用类方法创建单个对象示例: 在 models.py 中自定义类方法 create 进行创建 @classmethod def create(cls,p_name,p_age = 100,p_sex = True): # 自定义方法进行创建对象,可以包含表达式 return cls(p_name = p_name,p_age = p_age,p_sex = p_sex) views.py 中 add_person 函数 def add_person(request): person = Person.create(‘Lao‘) person.save() return HttpResponse("创建成功")
2020-05-09