day19-获取单表数据的三种方式
一、前言
之前我们获取表单,获取的类型都是以对象方式获取,还有之前我们写url的时候,如果是用re_path方式写的路由的话,在最后最好加上一个结尾符$:
from django.urls import path,re_path
from app01 import views
urlpatterns = [
re_path('^business/$',views.business) #如果不加$的话,下面的business_add这个链接就访问不到了,直接被第一个拦截了
re_path('^business_add',views.business)
]
如果不这样的写话的,那么下面有business开头的路由全部访问不到,因为全部被第一个拦截了。
二、获取单表数据的三种方式
2.1、对象获取方式
说明:获取的是QuerySet类型,输出的是每个元素都是类的对象,这个对象有类中所有属性
def business(request):
v1 = models.Business.objects.all()
print(v1)
return render(request,"business.html",{'v1':v1})
#输出
<QuerySet [<Business: Business object (1)>, <Business: Business object (2)>, <Business: Business object (3)>, <Business: Business object (4)>]>
templates模板引用:
<h1>业务线列表(对象)</h1>
<ul>
{% for row in v1 %}
<li>{{ row.id }}-{{ row.caption }}-{{ row.code }}</li>
{% endfor %}
</ul>
2.2、以字典方式获取
说明:获取的是QuerySet类型,输出的是每个元素是字典类型,values("id","caption"):表示只获取id和caption。values()默认获取所有字段。
def business(request):
v2 = models.Business.objects.values("id","caption") #相当于 select id,caption from Business
print(v2)
return render(request,"business.html",{'"v2":v2})
#输出
<QuerySet [{'id': 1, 'caption': '运维'}, {'id': 2, 'caption': '开发'}, {'id': 3, 'caption': '测试'}, {'id': 4, 'caption': '产品'}]>
templates模板引用:
<h1>业务线列表(字典)</h1>
<ul>
{% for row in v2 %}
<li>{{ row.id }}-{{ row.caption }}</li>
{% endfor %}
</ul>
2.2、以元组方式获取
说明:获取的是QuerySet类型,输出的是每个元素是元组,values_list("id","caption"):表示只获取id和caption。values_list()默认获取所有字段。
def business(request):
v3 = models.Business.objects.values_list("id","caption")
print(v3)
return render(request,"business.html",{"v3":v3})
#输出
<QuerySet [(1, '运维'), (2, '开发'), (3, '测试'), (4, '产品')]>
templates模板引用:
<h1>业务线列表(元组)</h1>
<ul>
{% for row in v3 %}
<li>{{ row.0 }}-{{ row.1 }}</li>
{% endfor %}
</ul>
三、总结
-
models.Business.objects.all() 以对象形式获取 -
models.Business.objects.values()字典方式获取 -
models.Business.objects.values_list()元组方式获取 - 以上三种获取的对象都是QuerySet类型

浙公网安备 33010602011771号