我是django和ajax的新手,所以我一直在研究项目以了解它。我有两个按钮,一个添加一个标记,一个删除标记。将AJAX数据发送到错误的Django视图
这里是views.py
@csrf_exempt
def save(request):
searchVar = request.POST.getlist('search[]')
waypoint = Waypoint()
waypoint.name = searchVar[0]
waypoint.geometry = ('POINT(' + searchVar[2] + " " + searchVar[1] + ')')
waypoint.save()
return HttpResponse(json.dumps(dict(isOk=1)), content_type='application/json')
@csrf_exempt
def remove(request):
objectID = request.POST.get('id')
point = get_object_or_404(Point, pk = objectID)
point.delete()
这里是urls.py
from django.conf.urls import patterns, url, include
urlpatterns = patterns('googlemaps.waypoints.views',
url(r'^$', 'index', name='waypoints-index'),
url(r'', 'save', name='waypoints-save'),
url(r'', 'remove', name='waypoints-remove'),
)
,这里是从JS ajax的文件
$('#saveWaypoints').click(function() {
var searchList = [search.name, search.geometry.location.lat(), search.geometry.location.lng()]
$.ajax({
url : "waypoints-save",
type : "POST",
data : { search : searchList }
}, function (data) {
if (data.isOk) {
$('#saveWaypoints');
} else {
alert(data.message);
}
});
});
$('#removeWaypoints').click(function() {
console.log(markerID);
$.ajax({
url : "waypoints-remove",
type : "POST",
data : { id : markerID }
}, function (data) {
if (data.isOk) {
$('#removeWaypoints');
} else {
alert(data.message);
}
});
});
保存按钮作品好,但是当我点击删除按钮时,我的控制台日志中出现这个错误
POST http://127.0.0.1:8000/waypoints-remove 500 (Internal Server Error)
IndexError at /waypoints-remove
list index out of range
Request Method: POST
Request URL: http://127.0.0.1:8000/waypoints-remove
这个错误在我的服务器CMD
Internal Server Error: /waypoints-remove
Traceback (most recent call last):
File "C:\Users\rnvitter\virtualenv4\myvenv\lib\site-packages\django\core\handlers\base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\rnvitter\virtualenv4\myvenv\lib\site-packages\django\core\handlers\base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\rnvitter\virtualenv4\myvenv\lib\site-packages\django\views\decorators\csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\rnvitter\virtualenv4\googlemaps\googlemaps\waypoints\views.py", line 23, in save
waypoint.name = searchVar[0]
IndexError: list index out of range
2017-01-09 22:40:11,781 - ERROR - Internal Server Error: /waypoints-remove
Traceback (most recent call last):
File "C:\Users\rnvitter\virtualenv4\myvenv\lib\site-packages\django\core\handlers\base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\rnvitter\virtualenv4\myvenv\lib\site-packages\django\core\handlers\base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\rnvitter\virtualenv4\myvenv\lib\site-packages\django\views\decorators\csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\rnvitter\virtualenv4\googlemaps\googlemaps\waypoints\views.py", line 23, in save
waypoint.name = searchVar[0]
IndexError: list index out of range
这使我相信,从删除按钮AJAX调用数据被发送到我保存视图,没有人知道吗?
在js文件中,您定义的url不起作用。您必须在html页面中定义ajax,并在ajax中使用URL的语法:url:“{%url”waypoints-save'%}“,自动创建URL和您的ajax将采用正确的方法并使用django最新的方式来定义urls.py文件中的url没有模式https://docs.djangoproject.com/zh/1.10/topics/http/urls/#example –