Django 模板语法取值

1、models.py

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)

2、数据

3、views.py

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})

分析:这里prodline1、prodline2、prodline3数据类型都是QuerySet,但内部数据是不同类型的。

prodline1内部是对象,prodline2内部是字段,prodline3内部是元组。

我们可以通过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 获取到的是一个个对象组成的列表(也可以说是集合)。

prodline2 获取到的也是一个个字典组成的列表(也可以说是集合)。

proline3 获取到的是一个个元组组成的列表(也可以说是集合)。

templates模板中如何分别通过对象、字典、元组来循环取值?

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开始。

时间: 2024-10-19 14:48:12

Django 模板语法取值的相关文章

【转】Django 模板语法

转自:https://www.cnblogs.com/love9527/p/9077863.html Django 模板语法 一.模板 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法 模板语法变量:{{ }}在Django模板中遍历复杂数据结构的关键是句点字符 .(其实就是点号)views.py from django.shortcuts import render def index(request): name = "Hello world!&quo

django模板语法之include

假如我们有以下模板index.html,代码为: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div>网页公共头部部分</div> <h2> 网页body部分 </h2>

Django模板如何用一个变量查找字典值

mydict = {"key1":"value1", "key2":"value2"} 在Django模板中查找字典值的常规方法是{{mydict.key1}},{{mydict.key2}}.如果键是循环变量怎么办?即: {% for item in list %} # list中元素,都有一个NAME属性 {{ mydict.item.NAME }} # 取出字典中相对应的NAME属性的key对应的value {% end

关于模板中的动态取值 ---反射与javascript脚本编译

在项目中经常遇到一个问题,打印word或者打印excel的时候,我们经常使用一对一的赋值或者批量替换的方式来对模板进行修改. 但是现在遇到两种场景: 1.取值是通过自定以方法进行取值的. 如:一个销售单据,会涉及到很多种费用,并且这些费用是由后台配置的,非常灵活.但是我们在制作打印模板时取值各项费用我们该如何去定义他呢,如何给他赋值呢?我们如果针对这一个场景下的模板进行一个特殊定义后,在打印另一份单据或者遇到同样的取值非常灵活的数据,是不是也需要进行特殊处理呢. 2.取值是通过自行定义进行取值的

Django模板2

接着Django模板1继续写模板相关知识. if标签 {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ). 但是不允许在同一个标签中同时使用 and 和 or,下边是不合法的: {% if athlete_list and coach_list or cheerleader_list %} 多次使用同一个逻辑操作符是没有问题的,但是我们不能把不同的操作符组合起来. {% if athlete_list or coach_list

django模板&amp;过滤器

django模板&过滤器 声明:部分信息来源这篇博客https://www.cnblogs.com/maple-shaw/articles/9333821.html MVC: 模型(model)-------->模型 视图(view)----->html 控制器(controller)--------->业务逻辑 Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性. Django框架的不同之处在于它拆分的三部分为:Model(模型).Te

3.django模板,单表ORM增删改查

1.Django模板语法 模板语法: 变量: {{}} 1 深度查询 句点符 2 过滤器 {{val|filter_name:参数}} 标签: {% %} 1.1Django模板使用 from django.shortcuts import render import datetime def index(request): now = datetime.datetime.now() return render(request,"index.html",{"current_t

Django项目实践2 - Django模板(常用语法规则)

http://blog.csdn.net/pipisorry/article/details/45727309 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签及属性]} Django 模板标签 if/else 标签 1. 基本语法格式如下: {% if condition %} ... display {% endif %} 或者: {% if condition1 %} ... display 1 {% elif con

Django入门二之模板语法

一. 模板变量 Context传入的可以是一个str,dict,list,甚至是一个实例对象 在html中如何调用这些对象进行取值呢 1. 变量名 {{ variable }} 返回字符串,无论是str,list,dict 2. list取值 {{ list.index }} 如{{ list.0}},{{ list.1}},分别取list的第一个元素和第二个元素 3. dict取值 {{ dict.key }} 如{{ user.name }} ,name={'name':'Tom'} 4.