我已经使用jQuery和Ajax将经度和纬度数据提交到要存储这些数据的任何模型。
在您的model.py中:
from django.contrib.auth import User
class UserGeoLocation(models.Model):
user = models.OneToOneField(User)
latitude = models.FloatField(blank=False, null=False)
longitude = models.FloatField(blank=False, null=False)
为您的view.py
def save_user_geolocation(request):
if request.method == 'POST':
latitude = request.POST['lat']
longitude = request.POST['long']
UserGeoLocation.create(
user = request.user
latitude= latitude,
longitude = longitude,
)
return HttpResponse('')
现在我们有了视图,我们可以设置一个URL端点来提交发布请求
url('^abc/xyz/$', appname.views.save_user_geolocation)
最后是实际形式
$(document).on('submit', '#id', function(e){
e.preventDefault();
$.ajax(
type='POST',
url = 'abc/xyz',
data : {
lat:position.coords.latitude,
long: position.coords.longitude
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
},
});
对于最后一步,假设您使用了链接示例中的js代码,然后可以将这些坐标值分配给变量,这些变量将随用户单击按钮时触发的发布请求一起提交。您要从中提交数据的表单的ID,e.PreventDefault用于阻止发布数据时重新加载页面。最后,django需要csrf令牌才能提交表单。