我想在没有任何提交按钮的情况下自动将用户输入保存在文本区域中。我正在寻找的UI是类似于google docs的东西。理想情况下,输入后应该有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都是新手。
发布于 2020-10-15 08:32:35
我从来没有听说过这种可能性。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>我知道在服务器端做任何事情的能力是非常方便的,看起来也很好,但这是不可能的。您还需要学习如何在客户端处理服务器。
您可以在此处阅读有关表单的更多信息https://docs.djangoproject.com/en/3.1/topics/forms/
https://stackoverflow.com/questions/64362335
复制相似问题