避免 Django 的 QueryDict 列表限制

发布于 2024-12-02 20:12:59 字数 580 浏览 1 评论 0原文

我正在尝试将数据从网页发送到 django 视图,以将其作为序列化 json 保存到数据库中。如果可能的话,我想避免使用 django 的 QueryDict 对象,而只使用 simplejson 读取请求,压平并保存到数据库。发送数据以便 simplejson 可以展平数据的最佳方式是什么?

var languages = {};
languages['english'] = ['mark', 'james'];
languages['spanish'] = ['amy', 'john'];

$.ajax({
    type: 'POST',
    url: '/save/',
    data: languages,
    dataType: 'json'
});

if request.is_ajax() and request.method == 'POST':
    for key in request.POST:
        print key
        valuelist = request.POST.getlist(key)
        print valuelist

I'm trying to send data from a webpage to a django view to be saved as serialized json to a database. If possible, I would like to avoid django's QueryDict object and just read the request with simplejson, flatten, and save to the database. What is the best way to send the data so simplejson can flatten it?

var languages = {};
languages['english'] = ['mark', 'james'];
languages['spanish'] = ['amy', 'john'];

$.ajax({
    type: 'POST',
    url: '/save/',
    data: languages,
    dataType: 'json'
});

.

if request.is_ajax() and request.method == 'POST':
    for key in request.POST:
        print key
        valuelist = request.POST.getlist(key)
        print valuelist

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

偷得浮生 2024-12-09 20:12:59

我怀疑是否可以使 django 避免创建 QueryDict,但您可以忽略它(来自 iPhone Json POST 请求到 Django 服务器在 QueryDict 中创建 QueryDict):
<代码>

def view_example(request):
    data=simplejson.loads(request.raw_post_data)

I doubt that it is possible to make django avoid creating QueryDict, but you can ignore it (from iphone Json POST request to Django server creates QueryDict within QueryDict):

def view_example(request):
    data=simplejson.loads(request.raw_post_data)

神魇的王 2024-12-09 20:12:59

您是否尝试过 QueryDict.lists() 或 QueryDict.dict() 方法? https://docs.djangoproject.com/en/dev/参考/请求响应/#querydict-objects

Have you tried the QueryDict.lists() or QueryDict.dict() methods? https://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects

夜吻♂芭芘 2024-12-09 20:12:59

您可以尝试http://code.google.com/p/jquery-json/ 并在客户端制作 json 字符串。

var languages = {};
languages['english'] = ['mark', 'james'];
languages['spanish'] = ['amy', 'john'];

var json_languages = $.toJSON(languages);//'{"plugin":"jquery-json","version":2.2}'

// '{"spanish": ["amy", "john"], "english": ["mark", "james"]}'

$.post('/save/', {data: json_languages});

只是认为:

if request.is_ajax() and request.method == 'POST':
     data = request.POST.get('languages')

这不是最佳实践,但有时对我来说效果很好。

You can try http://code.google.com/p/jquery-json/ and make json string on client side.

var languages = {};
languages['english'] = ['mark', 'james'];
languages['spanish'] = ['amy', 'john'];

var json_languages = $.toJSON(languages);//'{"plugin":"jquery-json","version":2.2}'

// '{"spanish": ["amy", "john"], "english": ["mark", "james"]}'

$.post('/save/', {data: json_languages});

in view just:

if request.is_ajax() and request.method == 'POST':
     data = request.POST.get('languages')

it's not the best practice, but it works fine for me sometimes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文