您好我正在尝试将我的视图传达给我的ajax脚本。
urls.py
from .views import (
video_testimonial,
)
urlpatterns = [
url(r'^(?P<id>\d+)/video_testimonial/$', video_testimonial, name='video_testimonial'),
]
所以基本上它需要一个整数,以便url可以访问。
例如 0 / video_testimonial /
这是我的
views.py
def video_testimonial(request, id):
testimonial = Testimonial.objects.filter(id=id)
if request.is_ajax():
context = {
'testimonial': testimonial,
}
return JsonResponse(context)
else:
raise Http404
我的html中的脚本(内部脚本):
presentation.html
function showVideoTestimonial() {
var id = parseInt($('.carousel-inner a').attr('id'));
$.ajax({
url: id +'/video_testimonial/',
success: function (data) {
console.log(data.testimonial);
$('.carousel-inner a').click(function () {
console.log(id);
});
}
})
}
showVideoTestimonial();
url:id +'/ video_testimonial /',我错过了访问网址的内容吗?谢谢你回复
答案 0 :(得分:1)
不应使用.filter
,而应使用.get
,因为它应该返回一个对象。该错误表明QuerySet不是Json可序列化的,这是非常明显的。你需要的是将对象转换为dict。这可以通过
testimonial.__dict__
确保testimonial
是模型对象而不是查询集。
有关如何将对象转换为dict的更多详细信息,请查看https://stackoverflow.com/a/29088221/4117381
旁注:使用完整的URL创建json请求总是更好。如果您使用的是Django模板,则可以使用{% url 'video_testimonial' id%}