我知道这在某种程度上不是类似stackoverflow的问题,但请不要禁止我。我真的需要一个关于此的最佳实践建议。
我有一个Django视图在HTML模板上呈现一个表。 我的目标是在客户端验证用户输入数据,部分验证与复杂数据分析有关,该分析考虑了未在表中呈现的数据。我不能使用用户定义的属性,因为我根据过滤条件在表上隐藏行的过滤器,如果过滤器不为空,则基于解析所有表行,我的数据验证将不正确。
UPDATE:因此,我将JSON对象从我的Django视图传递给HTML模板。但问题是我无法将其传递给外部JS文件。
例如,假设我有一个可编辑的表格,如下所示。
<tbody json_failed_attempt = {{json_object}}>
{% for vendor in vendors_table %}
<tr>
<td class = 'click_this_row'>
{{vendor.legal_entity.name}}
</td>
</tr>
{% endfor %}
</tbody>
JQuery的
$('td.click_this_row').on('change', function()
{
// HOW SHOULD I PARSE THROUGH THE JSON ???
// This alert outputs this:
// "[{"model":"
alert ($('#vendorsTable tbody').attr('legal_entities_json'))
}
Django观点:
def vendors(request):
vendors_table = Vendors.objects.all()
legal_entities_queryset = LegalEntities.objects.all()
legal_entities_json = serializers.serialize('json', legal_entities_queryset, fields=('inn', 'kpp'))
return render_to_response('vendors/vendors_list.html',
{'vendors_table':vendors_table,
'legal_entities_json' : legal_entities_json},
context_instance=RequestContext(request))
这种方法可行吗?如果是的话,为什么我不能在这里使用parseJSON?循环应该怎么样?
答案 0 :(得分:2)
在javascript中使用JSON.parse
:
JSON.parse($('#vendorsTable tbody').attr('legal_entities_json'))
另一种方法是创建javascript变量并为其分配JSON对象(因为JSON是一个有效的javascript对象)。在您的模板中:
<script>
var data = {{ json_object }};
</script>
然后在外部JS文件中使用data
变量。