Django ajax url 不读
Django ajax url not reading
我有一个 ajax 文件,它从 urls.py
调用 url,从 views.py
获取 json 数据,但是当我 运行 刚刚显示的服务器 Not Found:/dept-json/
我确实设法使用 django 代码段让它工作 {% url 'accounts:dept-json'%}
但是我不想要这个,因为我需要从 dept-json data
获取变量并将其传递给另一个 ajax url 即:
url:`/prog-data/${selectedDept}/`
我读过 here 你不能像 {% url 'accounts:prog-json' department%}
那样在 ajax 中传递变量
我如何做到这一点?
here is my code:
main.js
//First ajax
$.ajax({
type: 'GET',
url: "/dept-json/",
// url: "{% url 'accounts:dept-json'%}",
success: function(response){
console.log(response)
},
error: function(error){
console.log(error)
}
})
//Second ajax
$.ajax({
type: 'GET',
url: `/prog-data/${selectedDept}/`,
success: function(response){
console.log(response)
},
error: function(error){
console.log(error)
}
})
urls.py
path('dept-json/', get_json_dept_data, name='dept-json'),
path('prog-json/<str:department>/', get_json_prog_data, name='prog-json'),
views.py
def get_json_dept_data(request):
qs_val = list(Department.objects.values())
return JsonResponse({'data':qs_val})
def get_json_prog_data(request, *args, **kwargs):
selected_department = kwargs.get('department')
obj_prog = list(Program.objects.filter(department__name=selected_department).values())
return JsonResponse({'data':obj_prog})
您需要像这样在 ajax 请求中发送数据:
$.ajax({
url: "{% url 'accounts:prog-json'%}",
data: {
'department': selectedDept
},
success: function(response){
console.log(response)
},
error: function(error){
console.log(error)
}
})
然后在您的视图中,您可以从请求中访问该参数:
def get_json_prog_data(request):
selected_department = request.GET.get('department')
obj_prog = list(Program.objects.filter(department__name=selected_department).values())
return JsonResponse({'data':obj_prog})
我认为您不需要 url 中的参数,因此您应该能够删除它,因为我们正在 ajax 请求中发送数据。
path('prog-json/', get_json_prog_data, name='prog-json'),
我有一个 ajax 文件,它从 urls.py
调用 url,从 views.py
获取 json 数据,但是当我 运行 刚刚显示的服务器 Not Found:/dept-json/
我确实设法使用 django 代码段让它工作 {% url 'accounts:dept-json'%}
但是我不想要这个,因为我需要从 dept-json data
获取变量并将其传递给另一个 ajax url 即:
url:`/prog-data/${selectedDept}/`
我读过 here 你不能像 {% url 'accounts:prog-json' department%}
我如何做到这一点?
here is my code:
main.js
//First ajax
$.ajax({
type: 'GET',
url: "/dept-json/",
// url: "{% url 'accounts:dept-json'%}",
success: function(response){
console.log(response)
},
error: function(error){
console.log(error)
}
})
//Second ajax
$.ajax({
type: 'GET',
url: `/prog-data/${selectedDept}/`,
success: function(response){
console.log(response)
},
error: function(error){
console.log(error)
}
})
urls.py
path('dept-json/', get_json_dept_data, name='dept-json'),
path('prog-json/<str:department>/', get_json_prog_data, name='prog-json'),
views.py
def get_json_dept_data(request):
qs_val = list(Department.objects.values())
return JsonResponse({'data':qs_val})
def get_json_prog_data(request, *args, **kwargs):
selected_department = kwargs.get('department')
obj_prog = list(Program.objects.filter(department__name=selected_department).values())
return JsonResponse({'data':obj_prog})
您需要像这样在 ajax 请求中发送数据:
$.ajax({
url: "{% url 'accounts:prog-json'%}",
data: {
'department': selectedDept
},
success: function(response){
console.log(response)
},
error: function(error){
console.log(error)
}
})
然后在您的视图中,您可以从请求中访问该参数:
def get_json_prog_data(request):
selected_department = request.GET.get('department')
obj_prog = list(Program.objects.filter(department__name=selected_department).values())
return JsonResponse({'data':obj_prog})
我认为您不需要 url 中的参数,因此您应该能够删除它,因为我们正在 ajax 请求中发送数据。
path('prog-json/', get_json_prog_data, name='prog-json'),