Django 模板语法取值

简介:

1、models.py

1
2
3
4
5
6
7
8
9
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、数据

wKiom1lDd2KAsOQwAAC9aC4ngQ4275.png


3、views.py

1
2
3
4
5
6
7
8
9
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 在命令行查看他们内部数据结构类型和数据结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!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开始。










本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1937465,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
34 0
|
5月前
|
索引 Python
19 Django模板 - 定义模板
19 Django模板 - 定义模板
17 0
|
5月前
|
Python
18 Django模板 - 介绍
18 Django模板 - 介绍
25 0
|
7月前
|
Python
Django模板加载与响应2
Django模板加载与响应2
39 0
|
4天前
|
开发者 Python
Django模板系统的强大之处:动态渲染与扩展性
【4月更文挑战第15天】Django模板系统是Web开发中的强大工具,支持动态渲染和扩展性。动态渲染包括变量、标签和过滤器的使用,实现内容根据上下文数据动态生成。模板继承和自定义标签则提升了扩展性,减少代码重复,增强可维护性。通过这些特性,Django模板系统助力开发者构建高效、动态的Web应用。
|
3月前
|
前端开发 JavaScript Python
Django 模板中使用 Ajax POST
Django 模板中使用 Ajax POST
17 0
|
4月前
|
前端开发 JavaScript 数据库
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
37 0
|
5月前
|
Ubuntu Python
23 Django模板 - 验证码案例
23 Django模板 - 验证码案例
31 0
|
5月前
|
安全 JavaScript 前端开发
22 Django模板 - csrf
22 Django模板 - csrf
26 0
|
5月前
|
JavaScript Python
21 Django模板 - HTML转义
21 Django模板 - HTML转义
24 0