【问题标题】:How to recognaize which ajax form it is in Django?如何识别它在 Django 中是哪种 ajax 形式?
【发布时间】:2012-05-14 10:18:56
【问题描述】:

我的视图负责处理来自客户端的所有 Ajax 提交。为了区分它们,我使用了不同的提交按钮名称,例如这个

<input type="submit" value="Send" name="send_message">

来自question 的建议。 唯一的问题是,从视图方面来看,它似乎没有将name 传送到服务器端,所以我不能使用以下 if 语句

if 'send_message' in request.POST:

如果我用新鲜的页面正常发送它就可以了。但我想将它与 Ajax 一起使用。

我想出了一个技巧,你可以用 jQuery 添加这个名字。只需在serializing() 您的数据之后,您就可以通过data += "&amp;send_message" 连接名称属性

然后 if 语句将起作用。但它似乎并不那么干净。所以我想知道是否有更好的方法来处理这个问题?或者我应该使用不同的视图来处理我拥有的不同 Ajax 调用?

【问题讨论】:

    标签: ajax django jquery


    【解决方案1】:

    您确实应该将每个表单发布到不同的 URL。

    如果没有,您可以添加一个隐藏输入,将表单名称作为值。

    <input name="form_name" type="hidden" value="form_1" />
    

    views.py:

    form_name = request.POST['form_name']

    【讨论】:

    • 这将是许多不同的 url,实际上并没有将用户带到另一个页面。我认为将所有 Ajax 调用堆叠到同一个 url 会更干净。然后检查它是什么ajax调用并相应地处理它
    • 通常认为让一个功能(视图、网址)只执行一项特定任务会更简洁。但是如果你真的想将所有代码组织到一个视图中,那么你可以使用上面的隐藏元素。
    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 2021-07-30
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    相关资源
    最近更新 更多