在 Django 的文本区域中自动保存用户输入

我想自动将用户输入保存在文本区域中,而不需要任何提交按钮。我正在寻找的用户界面是谷歌文档之类的东西。理想情况下,输入后应有 2-3 秒的时间间隔,以防止每次输入内容都提交请求。


这是我当前的实现。


模型:


class ActionField(models.Model):

content = models.TextField()


def __str__(self):

    return self.content

看法:


def action_view(request):

all_todo_items = ActionField.objects.all()

return render(request, 'action.html',

              {'all_items': all_todo_items})

和显示我想删除的表单和提交按钮的 html:


<form action="/add/" method='post'>{% csrf_token %}

    <textarea name="content" rows="30" cols="100"></textarea>

    <br><br>

 <input type="submit" value="enter">

</form>

经过一些快速研究,似乎这通常是使用 AJAX 或 Jquery 完成的,但是有没有纯粹使用 Django 的简单方法?我对框架以及 html / FE 都是新手。


慕哥9229398
浏览 103回答 1
1回答

侃侃尔雅

我从来没有听说过这种可能性。Django(就像任何其他后端框架一样)只能向浏览器发送数据或从浏览器接收数据。如果浏览器端没有任何脚本,它无法以某种方式使您的浏览器发送某些内容。但是,您可以使用一个脚本:<head>  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script></head><body>  <form action="/add/" method='post'>{% csrf_token %}    <textarea name="content" rows="30" cols="100"></textarea>    <br><br>     <input type="submit" value="enter">  </form>      <script>    $("textarea[name='content']").on("change", function() {      $.ajax({        url: '/add/', // or better {% url 'view-name-in-urls.py' %}        method: 'POST',        data: {          content: $(this).val(),          csrfmiddlewaretoken: '{{ csrf_token }}'        }      }).done(function(msg) {        alert("Data saved");      })    });  </script></body>我知道在服务器端完成所有事情的能力非常方便并且看起来不错,但这是不可能的。您还需要学习如何在客户端处理服务器。
打开App,查看更多内容
随时随地看视频慕课网APP