如何将JSON数据从Django视图传递给Vue.js实例方法
问题描述:
我是新来的Vue.js。如何将JSON数据从Django视图传递给vue实例(方法)。如何将JSON数据从Django视图传递给Vue.js实例方法
Views.py
def articles(request):
model = News.objects.all() # getting News objects list
random_generator = random.randint(1, News.objects.count())
context = {
'title' : 'Articles' ,
'modelSerialize' : serializers.serialize('json',News.objects.all()),
'num_of_objects' : News.objects.count() ,
}
return render(request, 'articles.html',context)
VueScript.js
new Vue({
el: '#list-Of-Articles-Displayed',
data: {
count: 0
},
ready: function() {
this.$http.get('http://127.0.0.1:8000/article/').then(function (response) {
response.status;
console.log(response);
}, function (response) {
alert("error ");
// error callback
});
}
})
模板(article.html)
<div id = "list-Of-Articles-Displayed" class = "col-lg-10" v-for="news in loadArticles" >
<div class = "col-lg-11">
<br>
<a href = "<%news.id%>" ><%news.title%></a>
<h5><small><%news.date%></small></h5>
<p>
<%news.body%>...<span style = "color : purple" > <a href = "<%news.id%>"> Call to Action</a>
<br><br></span>
</p>
</div>
我想访问VueScript.js中的JSON数据,而不是JSON数据我正在获取完整的HTML结构。
任何人都可以帮助我吗?由于
答
也许你应该使用JsonResponse
代替:
from django.http import JsonResponse
def articles(request):
model = News.objects.all() # getting News objects list
random_generator = random.randint(1, News.objects.count())
context = {
'title' : 'Articles' ,
'modelSerialize' : serializers.serialize('json',News.objects.all()),
'num_of_objects' : News.objects.count() ,
}
return JsonResponse(context)
,你得到的问题是,呈现收益与内容型text/html
,你需要为Ajax调用什么响应是响应内容类型为application/json
。 JsonResponse
是确保您的响应具有正确内容类型的快速方法。你可以阅读更多关于JsonResponse here或阅读这StackOverflow answer
答
你可以添加html到你的vue组件,并通过restful-api服务json,使用例如。 Django Rest框架。为了使API调用,你会VUE路由器添加到VUE:在VUE
views.py
context = {'page_data' : json.dumps({"title": "Articles"})}
article.html
<body data="{{ page_data }}">
答
也许这样实例
beforeMount(){
this.page = JSON.parse(document.getElementsByTagName('body')[0].getAttribute('data') || '{}');
}
我只获取JSON数据并显示在页面中。如何使用json数据获取完整的html页面 –