问题描述
我正在构建一个博客应用程序,但遇到了一个问题。
我想做什么
我正在尝试通过 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>
我不知道问题出在哪里。
任何帮助将不胜感激。
提前致谢。
解决方法
您需要更新属于请求中引用的用户的配置文件实例。 (这是假设请求是针对登录用户的)。
def func(request):
city = request.GET.get('city')
user = request.user
profile = Profile.objects.get(user=user)
profile.city = city
profile.save()
message = 'Updated'
return HttpResponse(message)