Django HTML模板 - 在页面的某处存储JSON对象

时间:2016-05-27 08:02:45

标签: jquery json django

我知道这在某种程度上不是类似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?循环应该怎么样?

1 个答案:

答案 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变量。