【问题标题】:Send Django Form as JSON via AJAX通过 AJAX 以 JSON 格式发送 Django 表单
【发布时间】:2016-07-17 06:45:10
【问题描述】:

我正在使用 Django 1.8.8 进行项目,我需要将 django 表单转换为 JSON 格式,以便可以通过 AJAX 调用将其发送到浏览器。

我发现这个包 (https://github.com/WiserTogether/django-remote-forms) 在 Pypi 上不再可用。距离上次提交已经 2 年了。

请您给我一些建议,告诉我该怎么做或使用哪个包?

提前感谢您的帮助。

【问题讨论】:

  • 您能提供更多信息吗?从 AJAX 调用收到表单后,您打算如何处理该表单?它必须是 JSON,还是呈现为 HTML 的表单可以工作?
  • 您需要更清楚自己在做什么。 Django 表单是在服务器上运行的代码。 “将其转换为 JSON 格式并将其发送到浏览器”实际上是什么意思?你的意思是你将表单 from 浏览器发布到你的服务器,然后你希望 Django 用 JSON 格式的响应 reply
  • 对不起,如果我不够清楚。我想要做的是将表单转换为 JSON,这样我就可以在客户端打印它。原因是如果用户未通过身份验证,则在执行特定操作后强制用户登录。我希望我的解释会更明确。

标签: python json ajax django forms


【解决方案1】:

你可以做的两件事主要是:

  • 将表单呈现为 HTML 字符串,然后发送。

  • 创建一个 JSON 对象,从中可以构造 HTML。

这是一个如何将表单对象转换为 json 的示例:

import json
def form_to_json(form):
    result = {}
    for name, field in form.fields.iteritems():
        result[name] = field_to_dict(field)
    return json.dumps(result)

def field_to_dict(field):
    return {
        "type": field.__class__.__name__,
        "widget_type": field.widget.__class__.__name__,
        "hidden": field.widget.is_hidden,
        "required": field.widget.is_required,
        "label": field.label,
        "help_text": field.help_text,
        "min_length": field.min_length, # optional
        "max_length": field.max_length, # optional
        "initial_value": field.initial,
    }

如果您还想在服务器端处理错误消息,您可能也应该在field_to_dict 中包含该信息。

要将表单呈现为 html,只需将其转换为字符串即可。

【讨论】:

  • 哇!非常感谢。我要试一试。我回头告诉你。再次感谢。
  • @bigblind 你能检查一下我的回答吗?提前致谢
【解决方案2】:
<script>
var data = $("#form_id").serialize()
$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
</script>

我猜......也许......它真的不清楚你在问什么

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多