javascript - 如何将 django 中的数据渲染到 AJAX?
问题描述
我正在尝试从基于 django 类的视图向 ajax 发送一个 json 值,并且我发送的数据将通过 ajax 附加到 html 中。但我无法成功地将值从后端发送到前端。
class DetailView(TemplateView):
template_name = 'list.html'
def get_context_data(self,*args, **kwargs):
context = super(DetailView,self).get_context_data()
list_view = GetList().get_data(self.request)
movie_list = list.json()
context['list']= movie_list
print(movie_list)
return context
因此,此代码仅向 ajax 数据发送模板值,当我在成功调用时执行 console.log(data) 时,它会在 alert 和 console.log 中显示“list.html”的整个 html 代码。但它会在 cmd 控制台中打印所有值。
cclass DetailView(TemplateView):
template_name = 'list.html'
def get(self,request):
list_view = GetList().get_data(self.request)
movie_list = list.json()
return HttpResponse(json.dumps(movie_list))
此代码打印相应 html 上的所有值,但不调用 ajax 函数。因此 console.log 中没有显示值。
这是我的 ajax 调用,首先我想看看天气我是否成功地获得了成功调用的值。
<script>
$(document).ready(function(){
$.ajax({
method :'GET',
url: '/detail',
success: function(data){
alert(data)
console.log(data)
},
})
})
</script>
那么,我怎样才能达到我想要的结果呢?我想在 ajax 调用中获取值,所以我可以在列表形式的表中显示这些值
解决方案
您可以使用JsonResponse
发送 json 数据。(您可以在此处的文档中查看详细信息)
像下面
from django.http import JsonResponse
class DetailView(TemplateView):
template_name = 'list.html'
def get(self,request):
list_view = GetList().get_data(self.request)
movie_list = list.json()
return JsonResponse(movie_list, status=200)
顺便说一句,你必须知道你的数据类型。JsonResponse
自动序列化您的数据,因此您不必使用json()
您的数据。
推荐阅读
- ag-grid - Ag-Grid 如何从第 500 条开始加载记录?
- r - R中的ggmap和mapview包有问题吗?
- linux - Changing ansible loop due to v2.11 deprecation
- ios - Updating Menu Items In UIMenuController
- git - Git reflog expiration time
- javascript - Changing styles with delay
- python - 如何使 QSlider 不可点击
- azure - Azure Functions - how to set up IoTHubTrigger for my IoTHub messages?
- python - Python 3.7 单元测试期间异常部分的奇怪行为
- macos - 评估变量时VSCode调试器非常慢