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>

三、总结

  1. models.Business.objects.all() 以对象形式获取
  2. models.Business.objects.values()字典方式获取
  3. models.Business.objects.values_list()元组方式获取
  4. 以上三种获取的对象都是QuerySet类型
posted @ 2018-03-16 16:30  帅丶高高  阅读(221)  评论(0)    收藏  举报