如何通过 HTML 中的 JavaScript 在 Django 中保存模型实例

Posted

技术标签:

【中文标题】如何通过 HTML 中的 JavaScript 在 Django 中保存模型实例【英文标题】:How to save model instance in Django through JavaScript in HTML 【发布时间】:2021-06-11 02:47:31 【问题描述】:

我正在构建一个 BlogApp,但遇到了一个问题

我要做什么

我在模型中创建了一个名为user_location 的实例。我在template 中访问它,并编写javascript 代码以使用JavaScript 访问User's Location 但我希望我的模型实例将 JavaScript's Output country 保存在数据库中。

问题

我不知道如何通过 JavaScript 保存模型实例。

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,default='',unique=True)
    full_name = models.CharField(max_length=100,default='')
    user_location = models.CharField(mac_length=100,default'')

profile.html

<script>

$.ajax(
  url: "https://geolocation-db.com/jsonp",
  jsonpCallback: "callback",
  dataType: "jsonp",
  success: function(location) 
    $('#country').html(location.country_name);
  
);

</script>


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<div>Country: <span id="country"></span></div>

#This is my model instance.

 profile.user_location 

我尝试了什么

我也试过THIS。但它对我不起作用。

我不知道该怎么办。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用 fetch api from javascript 将来自 javascript 的数据存储在您的模型数据库中,例如 fetch(您的网站路由),您在其中创建了您的表单以进行发布请求。 您可以在您的路线上创建发布请求以保存您的数据库。 Example-url = "您的网站发布请求路由" 参数 = 方法:'发布', 标题: “内容类型”:“应用程序/json”

    body: data
fetch(url, params).then(response=> response.json())
.then(data => console.log(data)
)*/

【讨论】:

你能解释一下干净吗? 哦,我已经粘贴了完整的 javascript 代码,但我不知道为什么代码被破坏了我可以给出建议来阅读 javascript 的 fetch api,或者如果你使用 jQuery ajax,你可以使用发布请求,它将发布你的数据到你的数据库 好的,谢谢,我会在几分钟内尝试【参考方案2】:

使用 Ajax 将您的数据发送到后端,让 django 完成。

【讨论】:

但是我该怎么做呢?我以前从未使用过ajax将数据保存在db中。 使用Ajax将你的数据发送到django,接收后使用django保存。 但我希望它在没有保存按钮的情况下保存。我的意思是它应该自动保存数据。 什么动作应该触发保存功能?

以上是关于如何通过 HTML 中的 JavaScript 在 Django 中保存模型实例的主要内容,如果未能解决你的问题,请参考以下文章

如何通过javascript删除html5音频播放器中的源音频文件

如何使用 JavaScript 删除 iFrame 中的 HTML 元素

如何通过 JavaScript 获取 html 表格 td 单元格值?

如何通过 Carousel 中的 Javascript 代码更改背景图像?

通过Android WebView中的javascript检测点击HTML按钮

如何通过将鼠标悬停在Javascript中的三个按钮之一来显示和更新隐藏的div元素?