首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django中自动保存文本区域中的用户输入

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

Stack Overflow用户
提问于 2020-10-15 06:26:54
回答 1查看 284关注 0票数 1

我想在没有任何提交按钮的情况下自动将用户输入保存在文本区域中。我正在寻找的UI是类似于google docs的东西。理想情况下,输入后应该有2-3秒的时间间隔,以防止每次输入内容时都提交请求。

这是我目前的实现。

型号:

代码语言:javascript
复制
class ActionField(models.Model):
content = models.TextField()

def __str__(self):
    return self.content

查看:

代码语言:javascript
复制
def action_view(request):
all_todo_items = ActionField.objects.all()
return render(request, 'action.html',
              {'all_items': all_todo_items})

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

代码语言:javascript
复制
<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都是新手。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 08:32:35

我从来没有听说过这种可能性。Django (就像任何其他后端框架一样)只能向浏览器发送数据或从浏览器接收数据。它不能以某种方式让你的浏览器发送没有任何脚本的东西。但是,您可以使用以下脚本:

代码语言:javascript
复制
<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>

我知道在服务器端做任何事情的能力是非常方便的,看起来也很好,但这是不可能的。您还需要学习如何在客户端处理服务器。

您可以在此处阅读有关表单的更多信息https://docs.djangoproject.com/en/3.1/topics/forms/

和ajax https://api.jquery.com/jquery.ajax/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64362335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档