Python Django Ajax POST请求:内部服务器错误
请注意,自从我最近开始工作以来,我一直是AJAX领域的大人物。Python Django Ajax POST请求:内部服务器错误,python,jquery,ajax,django,django-views,Python,Jquery,Ajax,Django,Django Views,请注意,自从我最近开始工作以来,我一直是AJAX领域的大人物。 我正在使用Django 2.0和Python。 我试图以数组的形式返回不兼容选项的列表 这是我的型号: class Door(models.Model) : image = models.ImageField(upload_to=upload_location) color = models.ForeignKey(Color, on_delete=models.CASCADE) price = models.
我正在使用Django 2.0和Python。
我试图以数组的形式返回不兼容选项的列表 这是我的型号:
class Door(models.Model) :
image = models.ImageField(upload_to=upload_location)
color = models.ForeignKey(Color, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2, default='119.99')
not_comp_options = models.ManyToManyField(Option)
$.ajax({
type: "POST",
url: "/get_not_compat_options/" + door_id,
data: "",
dataType: 'json',
success: function()
{
console.log(data.onct)
}
})
urlpatterns = [
# Other url patterns
path('get_not_compat_options', views.get_not_compat_options, name="get_not_compat_options")
]
def get_not_compat_options(request, door_id) :
onct = []
door = get_object_or_404(Door, id=door_id)
not_compat_options = door.not_comp_options
for option in not_comp_options.all() :
onct.append(option.name)
data.append({"onct": onct})
return JsonResponse(data)
这是我的js模板:
class Door(models.Model) :
image = models.ImageField(upload_to=upload_location)
color = models.ForeignKey(Color, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2, default='119.99')
not_comp_options = models.ManyToManyField(Option)
$.ajax({
type: "POST",
url: "/get_not_compat_options/" + door_id,
data: "",
dataType: 'json',
success: function()
{
console.log(data.onct)
}
})
urlpatterns = [
# Other url patterns
path('get_not_compat_options', views.get_not_compat_options, name="get_not_compat_options")
]
def get_not_compat_options(request, door_id) :
onct = []
door = get_object_or_404(Door, id=door_id)
not_compat_options = door.not_comp_options
for option in not_comp_options.all() :
onct.append(option.name)
data.append({"onct": onct})
return JsonResponse(data)
这是我的URL:
class Door(models.Model) :
image = models.ImageField(upload_to=upload_location)
color = models.ForeignKey(Color, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2, default='119.99')
not_comp_options = models.ManyToManyField(Option)
$.ajax({
type: "POST",
url: "/get_not_compat_options/" + door_id,
data: "",
dataType: 'json',
success: function()
{
console.log(data.onct)
}
})
urlpatterns = [
# Other url patterns
path('get_not_compat_options', views.get_not_compat_options, name="get_not_compat_options")
]
def get_not_compat_options(request, door_id) :
onct = []
door = get_object_or_404(Door, id=door_id)
not_compat_options = door.not_comp_options
for option in not_comp_options.all() :
onct.append(option.name)
data.append({"onct": onct})
return JsonResponse(data)
以下是我的观点:
class Door(models.Model) :
image = models.ImageField(upload_to=upload_location)
color = models.ForeignKey(Color, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2, default='119.99')
not_comp_options = models.ManyToManyField(Option)
$.ajax({
type: "POST",
url: "/get_not_compat_options/" + door_id,
data: "",
dataType: 'json',
success: function()
{
console.log(data.onct)
}
})
urlpatterns = [
# Other url patterns
path('get_not_compat_options', views.get_not_compat_options, name="get_not_compat_options")
]
def get_not_compat_options(request, door_id) :
onct = []
door = get_object_or_404(Door, id=door_id)
not_compat_options = door.not_comp_options
for option in not_comp_options.all() :
onct.append(option.name)
data.append({"onct": onct})
return JsonResponse(data)
不幸的是,在浏览器控制台中,我收到了一个错误提示:500(内部服务器错误)
PS:如果这有帮助的话,我正在为我的服务器使用Nginx和gunicorn。您正在调用
data.append()
,而没有先定义数据
也许你也想要
data = [{"onct": onct}]
或
这里有一些奇怪的事情:
success
句柄,结果应该是一个带有键的字典onct
;及url.py
中的url不包含door\u id
参数.values\u list(..)
,我们还可以节省一点数据库带宽,并进一步使视图更加优雅:
def get_not_compat_options(request, door_id):
door = get_object_or_404(Door, id=door_id)
not_compat_options = door.not_comp_options
data = {'onct': list(not_comp_options.all().values_list('name', flat=True))}
return JsonResponse(data)
否则,这个
路径(…)
就不能接受门id
你能发布你的错误日志吗,这样我们就可以更好地了解出了什么问题?你应该查看Python服务器的日志来进行回溯。我得到jquery-3.2.1.min.js:4 posthttp://178.128.42.122/shop/get_not_compat_options/14 500(内部服务器错误)
我在哪里看到您需要在浏览器的开发工具中查找服务器发送的完整错误。另外,在非兼容选项
和非兼容选项
之间切换。csrf令牌丢失据我所知,没有其他字典:只有一个,另一个是。name
s,这似乎表明se是字符串。@Wariored我不认为CSRF是这里的问题-我希望看到的是状态代码403,而不是500。@WillemVanOnsem我之前误读了循环,我改变了我的建议。