django模块不能用for i in range(0, 5)总报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django模块不能用for i in range(0, 5)总报错相关的知识,希望对你有一定的参考价值。

我觉得你的目的很简单,就是想在模版中简单执行5次循环。可以使用make_list过滤器:

% for i in '12345'|make_list %
     i  
% endfor %

如果觉得这样有局限性,可以写一个简单的自定义过滤器:

@register.filter('list')
def do_list(value):
    return range(1, value+1)

然后这样使用:

% for i in 5|list %
     i 
% endfor %

如果你已经在视图中定义了好了一个变量,而只想执行5次,那么可以这样子:

% for i in example|slice:":5" %
     i 
% endfor %

追问

有办法使一个变量在里面自增么?例如一个page=0,在遍历list时,每遍历一次就自增一次

追答

模板本身提供的过滤器和标签似乎无法改变变量的值,这些应该在视图或者model中想办法才是呀。

参考技术A 在view.py函数中定义,在html中直接调用!!! 参考技术B range 和 django 没有什么关系。。。你具体说说你是怎么用的?追问

我想循环遍历model查找到的对象。。。次数是自定的

追答

可否把相关的几行代码贴出来?

追问

贴了

追答

囧! 你这是在html里啊? html里不支持 range 。

你可以这样: data=[0,1,2,3,4]
%for i in data%
i

%endfor%

追问

那么要怎么在html里的模板中设置变量 我要取值啊。。。不会没有吧

追答

你要取什么值? models查询到的对象?
比如: userList=User.objects.all()
那么在后台return的时候带上这个 userList 。
然后在html里:
%for user in userList%
user.username

%endfor%

追问

我要根据它迭代的次数来查找单独的数据,因为有其他实现所以不能用id

参考技术C 提示什么错误 ?追问

html里的模板能设置 根据迭代次数 自增的变量么

python中的for i in range怎么用?

假如for i in range(x, y,z) 括号中有三个而不是两个数字,那么这三个数字代表那些数呢?

第一个是开始值,第二个结束值,第三个是步长,默认为1,比如:

>>> for i in range(3, 13, 3):
...     print i
... 
3
6
9
12
>>>

如果解决了您的问题请采纳!
如果未解决请继续追问

参考技术A

for循环语句是Python中的一个循环控制语句,任何有序的序列对象内的元素都可以遍历,比如字符串、列表、元组等可迭代对象。

Python中for循环的一般格式:第一行是要先定义一个赋值目标(迭代变量),和要遍历(迭代)的对像;首行后面是要执行的语句块。

for 目标 in 对像:
    print 赋值目标

Python2.x中range()函数会返回一个列表,返回的对象便可以用for循环进行遍历。下面的例子中,for循环对range()返回的列表进行遍历并打印。

for i in range(1,5):
    print i,
# 1 2 3 4

以上是关于django模块不能用for i in range(0, 5)总报错的主要内容,如果未能解决你的问题,请参考以下文章

python中的for i in range怎么用

python中的for i in range怎么用

python中的for i in range怎么用

python中for i in range(0, 3.0 , 0.1)为啥错?

列表中使用嵌套for循环[i*j for i in range for j in range]

Python的for语句for i in range(N)到底是执行多少次循环