gpt4 book ai didi

ajax - 单页多个表单的优雅解决方案

转载 作者:行者123 更新时间:2023-12-02 08:56:16 27 4
gpt4 key购买 nike

我正在构建一个 Web 应用程序(在 Django 中),它将接受搜索条件并显示报告 - 一旦用户对结果感到满意,请将条件和对这些对象的引用保存回数据库。

我遇到的问题是找到一个优雅的解决方案来拥有两种形式:

  1. 显示 (GET) 其标准的结果。
  2. 输入一些描述,然后将所有内容保存(发布)回数据库。

我倾向于使用 AJAX 获取内容并使用 POST 进行保存,但我想首先确保没有更优雅的解决方案。

最佳答案

在实现 ajax 之前,我将尝试使表单在禁用 javascript 的情况下工作。这两种形式可以指向相同的 View 。对于路由操作,您可以使用 <button type="submit">标签为 name value属性已填充,而不是 <input type="submit"> .

2 个表单模板

<form action="{% url your-url %}" method="get">
<input type="text" name="q" value="{{ q }}">
<button type="submit" name="action" value="search">Search</button>
</form>

{% if entries %}
...
<form action="{% url your-url %}" method="post">
<input type="hidden" name="q" value="{{ q }}">
<button type="submit" name="action" value="save">Save entries</button>
</form>
{% endif %}

不太难看的单一表单模板

<form action="{% url your-url %}" method="post">
<input type="text" name="q" value="{{ q }}">

<button type="submit" name="action" value="search">Search</button>

{% if entries %}
...
<button type="submit" name="action" value="save">Save entries</button>
{% endif %}
</form>

然后,将“操作”捕捉到您的 View 中,就像这段代码(未经测试)

def your_view(request, *args, **kwargs):
action = request.REQUEST.get('action', None)
if request.method == 'POST' and action == 'save':
# do the save stuff
elif action == 'search':
# no need to check if it's a GET
if request.REQUEST.get('q', None):
# do the display stuff
else:
# q required, maybe push a warning message here
else:
# default stuff

return # the response ...

然后你可以使用ajax

关于ajax - 单页多个表单的优雅解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4653415/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com