我正在尝试将片段号传递给我的html。这将用于使用javascript更新所选标记的内容。我的所有标签都是由django中的双嵌套for循环创建的。但是从我的尝试来看,我没有成功。
以下是javascript代码:
$('td#'+new_data['piece_number']).html(new_data['img']);
这是有问题的双嵌套for循环:
<table id="table" bgcolor="{{puzzle.color_hash}}">
<tbody>
{% for x in n_rows %}
<tr id='r{{x}}'>
{% for y in n_cols %}
<td id='{{count}}' height='{{puzzle.piece_res_height}}' width='{{puzzle.piece_res_width}}'>
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
我希望{{count}}中的总迭代计数,但根据我的理解,django不允许你在渲染器中进行变量操作
我正在寻找一个结果,例如按列表行...
1 2 3
4 5 6
7 8 9
哪里有3行3列。 9件。每个都具有件号的td id
即。第2行第2列的td id为5
答案 0 :(得分:1)
你可以向html文件发送两个wariables而不是一个count
并更改id命名的ida。
<td id='r{{x}}d{{y}}' height='{{puzzle.piece_res_height}}' width='{{puzzle.piece_res_width}}'>
编辑 - 正确的解决方案
好的,我有两个解决方案。
两者都使用custom template filters。
档案app/templatetags/default_filters.py
from django import template
register = template.Library()
#first way
def mod(value, arg):
return value % arg == 0
#second way
@register.filter(name='multiply')
def multiply(value, arg):
return value*arg
register.filter('mod', mod)
上下文发送到模板
class MainSiteView(TemplateView):
template_name = "main_page.html"
def get_context_data(self, **kwargs):
context = super(MainSiteView, self).get_context_data(**kwargs)
n_rows = n_cols = 2
context['max_nums'] = n_rows * n_cols
context['n_rows'] = [0, 1]
context['n_cols'] = [0, 1]
context['number_of_columns'] = 2
context['range'] = [x for x in range(n_cols * n_rows)]
return context
和模板
{% load default_filters %}
<table id="_table" bgcolor="{{puzzle.color_hash}}">
<tbody>
{% for x in range %}
{% if not forloop.counter|mod:number_of_columns %}
<tr id='_r{{x}}'>
{% endif %}
<td id='_{{forloop.counter0}}' height='{{puzzle.piece_res_height}}' width='{{puzzle.piece_res_width}}'>
({{forloop.counter0}})
</td>
{% if forloop.counter|mod:number_of_columns %}
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
<table id="table" bgcolor="{{puzzle.color_hash}}">
<tbody>
{% for x in n_rows %}
<tr id='r{{x}}'>
{% for y in n_cols %}
<td id='{{x|multiply:number_of_columns|add:y}}' height='{{puzzle.piece_res_height}}' width='{{puzzle.piece_res_width}}'>
[{{x|multiply:number_of_columns|add:y}}]
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>