Django-AJAX-为什么需要url参数?

时间:2018-07-30 15:00:42

标签: ajax django django-urls

这是我第一次使用AJAX,我不明白为什么我需要在JS Ajax调用中指定url参数。

{% block javascript %}
  <script>
    $("#id_username").change(function () {
      $.ajax({
        url: '/some_new_url/',
        data: {
          'something': ...
        },
        success: function (data) {
          if (data.is_taken) {
            alert("Data is already in DB");
          }
        }
      });

    });
  </script>
{% endblock %}

据我了解,AJAX用于在服务器端执行某些操作而无需刷新页面。因此,在将数据发送到服务器后,它不应重定向到新的url,并保持在相同的url上。但是AJAX调用需要url参数。

我真的不喜欢这样,因为设置新的url意味着我必须在 app / urls.py 中添加另一个url模式。

re_path(r'^create/$', views.Some_View.as_view(), name='create'),

因此,请在我的 views.py

中再创建一个view
class Some_View(ListView):
    model = SomeModel
    fields = '__all__'

但是,我已经有一个CBV,它可以在用户端生成表单字段并接受用户输入。我只想使现有的CBV使用AJAX调用将数据保存到DB。

由于我不了解url的用途,所以我不知道如何设置新的url模式和CBV。我可以在这里得到一些解释吗?

++这只是一个额外的问题,但我的最终目标是生成多个表单字段和多个Submit按钮,这些按钮使用AJAX将各自的表单输入数据发送到服务器。如果对如何调整AJAX代码有任何建议,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

AJAX请求只是对服务器上URL的常规HTTP请求。 AJAX请求与普通浏览器GET或POST发出的请求之间的唯一区别是,使用AJAX,从服务器返回的结果将返回到javascript函数,然后您可以决定如何处理这些结果。

因此没有任何自动更新。

如果要在服务器上保存某些内容,则需要在服务器上有一个视图,该视图能够理解您在AJAX请求中发送的数据,将其保存,然后发送回一个响应,再次,您的javascript代码需要能够理解。

但是,如果您已经具有能够执行所需功能的视图,则可以将其用于AJAX请求,只需发送一个包含视图所需内容的请求。