【发布时间】:2021-06-11 19:55:36
【问题描述】:
我正在构建一个 BlogApp,但遇到了一个问题。
我要做什么
我正在尝试通过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='')
city = models.CharField(max_length=30,default='')
views.py
def func(request):
city = request.GET.get('city')
city.save()
message = 'Updated'
return HttpResponse(message)
模板 (.html)
# Getting city name ( first javascript code ) through IP is working.
<script>
$.ajax({
url: "https://geolocation-db.com/jsonp",
jsonpCallback: "callback",
dataType: "jsonp",
success: function(location) {
$('#city').html(location.city);
}
});
</script>
#This code is for send data to Django.
<script>
$("city").change(function)(){
const city = 'city';
$.ajax({
url ="{% url 'mains:func' %}",
data = {
'city':city,
} ,
success.function(data){
console.log("Update");
}
});
};
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div>City: <span id="city"></span></div>
我不知道问题出在哪里。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
在写入
city = request.GET.get('city')之后,变量city将包含一个字符串,该字符串具有在get 参数中发送的任何值(如果发送了参数,否则这将是None)。在这你写city.save()这没有意义(str甚至没有保存属性/方法你会在那里得到一个错误) -
那么,如何保存呢?
-
我相信您想更改当前用户的个人资料?您可以通过
profile = request.user.profile获取个人资料 -
是的,获取
request.user.profile有什么意义?我的意思是得到它有什么用? -
既然你想更新配置文件实例显然你需要它......你稍后会写类似
profile.city = city然后profile.save()......
标签: javascript python html django ajax