在 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