首页 > 解决方案 > 如何在 Django 中处理来自 DataTables Editor 的数据?

问题描述

我正在尝试在 Django 视图中处理通过 DataTables Editor 插件发送的数据。

收到的 request.POST 看起来像:

{'action': 'edit',
 'data[3115][row1]': 'value1',
 'data[3115][row2]': 'value2',
 'data[3115][row3]': 'value3',
 'data[3115][row4]': 'value4',
 'data[3115][row5]': 'value5'}

其中 3115 是我的模型的主键。

在 Django 视图中,从 POST 数据中获取PKmodel.row1, model.row2, model.row3,... 值的预期方法是什么?

所需的输出将类似于

result = {
    'pk': 3115,
    'row1': 'value1',
    'row2': 'value2',
    'row3': 'value3',
    'row4': 'value4',
    'row5': 'value5'
}

标签: pythonajaxdjangodatatablesjquery-datatables-editor

解决方案


你可以试试这个:

import re

a = {'action': 'edit',
     'data[3115][row1]': 'value1',
     'data[3115][row2]': 'value2',
     'data[3115][row3]': 'value3',
     'data[3115][row4]': 'value4',
     'data[3115][row5]': 'value5'}

d = {} # your desired result

for k,v in a.items():
    if k.startswith('data'):
        r = re.match('data\[(\d+)\]\[(\w+\d+)\]$', k)
        if r:
            d['pk'] = r.groups()[0]
            d[r.groups()[1]] = v

d是:

{'pk': '3115',
 'row1': 'value1',
 'row2': 'value2',
 'row3': 'value3',
 'row4': 'value4',
 'row5': 'value5'}

推荐阅读