Django 模板語法取值

一、models.py
html

class Business(models.Model):
    prodline = models.CharField(max_length=32)
    code =models.CharField(max_length=32,null=True,blank=True)
class Host(models.Model):
    nid = models.IntegerField(primary_key=True)
    hostname = models.CharField(max_length=32,blank=True,null=True,db_index=True)
    ip = models.GenericIPAddressField(blank=True,null=True,db_index=True)
    port = models.IntegerField(blank=True)
    prodline = models.ForeignKey(Business,to_field='id',on_delete=models.DO_NOTHING,null=True,blank=True)


二、數據python

wKiom1lDd2KAsOQwAAC9aC4ngQ4275.png


三、views.pyshell

from django.shortcuts import render
from models import *
# Create your views here.

def business(request):
    prodline1 = Business.objects.all()
    prodline2 = Business.objects.all().values('id','code')
    prodline3 = Business.objects.all().values_list('id','code')
    return render(request,'business.html',{'prodline1':prodline1,'prodline2':prodline2,'prodline3':prodline3})

分析:這裏prodline一、prodline二、prodline3數據類型都是QuerySet,但內部數據是不一樣類型的。django

prodline1內部是對象,prodline2內部是字段,prodline3內部是元組。bash

咱們能夠經過python manage.py shell 在命令行查看他們內部數據結構類型和數據結構數據結構

>>> from study.models import *
>>> proline1 = Business.objects.all()
>>> print type(proline1)
<class 'django.db.models.query.QuerySet'>

>>> prodline1 = Business.objects.all()
>>> prodline1
[<Business: Business object>, <Business: Business object>, <Business: Business object>, <Business: Business object>]

>>> prodline2 = Business.objects.all().values('id','code')
>>> prodline2
[{'code': u'SPMS', 'id': 1}, {'code': u'IPMS', 'id': 2}, {'code': u'CPMS', 'id': 3}, {'code': u'AMS', 'id': 4}]

>>> prodline3 = Business.objects.all().values_list('id','code')
>>> prodline3
[(1, u'SPMS'), (2, u'IPMS'), (3, u'CPMS'), (4, u'AMS')]

prodline1 獲取到的是一個個對象組成的列表(也能夠說是集合)。ide

prodline2 獲取到的也是一個個字典組成的列表(也能夠說是集合)。spa

proline3 獲取到的是一個個元組組成的列表(也能夠說是集合)。命令行


templates模板中如何分別經過對象、字典、元組來循環取值?code

business.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>業務線列表(對象)</h1>
    <ul>
        {% for row in prodline1 %}
        <li>{{ row.id }}-{{ row.code }}-{{ row.prodline }}</li>
        {% endfor %}
    </ul>
    <h1>業務線列表(字典)</h1>
    <ul>
        {% for row in prodline2 %}
        <li>{{ row.id }}-{{ row.code }}</li>
        {% endfor %}
    </ul>
    <h1>業務線列表(元組)</h1>
    <ul>
        {% for row in prodline3 %}
        <li>{{ row.0 }}-{{ row.1 }}</li>
        {% endfor %}
    </ul>
</body>
</html>

首先:模板語法取值都是使用「.「,對象和字典的取值方法同樣,點後面接字段名,而元組則是使用索引來取值,索引從0開始。

wKiom1lDe_7hALM4AAC-oV_y4Ww798.png

相關文章
相關標籤/搜索