嘿伙计们我想弄清楚如何通过ajax做一个GET请求来返回一个字典对象,我可以使用Django的模板标签迭代并显示结果。我似乎无法弄清楚这一点。任何帮助是极大的赞赏。感谢。
的Ajax / HTML:
$("#{{fabCatagory.categoryId}}btn").click(function(){
$.ajax({
type: 'GET',
url: '/companion/topic/{{fabCatagory}}/',
success: function(result){
console.log(result['topics'])
},
});
});
<div id="{{fabCatagory.categoryId}}" class="panel-collapse collapse">
<div class="panel-body">
<div class="list-group">
{%for fabCatagory in topics %}
<a id="{{ fabCatagory.topicId }}" class="list-group-item">{{ fabCatagory.topic }}</a>
{% endfor %}
</div>
</div>
</div>
查看:
@render_to ('companion/companionSub.html')
def topic(request, id):
ids = Catagories.objects.get(catagory=id)
topics = Topics.objects.filter(fabCatagory_id=ids.id).all()
topic_list = {'topics':topics}
return HttpResponse({'topics':topics})
更新:::添加模型。
from django.db import models
from embed_video.fields import EmbedVideoField
from imagekit.models import ProcessedImageField
from imagekit.processors import ResizeToFill
class Catagories(models.Model):
catagory = models.CharField(max_length=128)
categoryId = models.CharField(max_length=128)
def __unicode__(self):
return self.catagory
class Topics(models.Model):
fabCatagory = models.ForeignKey(Catagories)
topic = models.CharField(max_length=128)
topicId = models.CharField(max_length=128)
def __unicode__(self):
return self.topic
class Fabrics(models.Model):
fabTopic = models.ForeignKey(Topics)
fabName = models.CharField(max_length=128)
fabContent = models.CharField(max_length=128, blank=True)
fabWeave = models.CharField(max_length=128, blank=True)
fabDye = models.CharField(max_length=128, blank=True)
fabFinish = models.CharField(max_length=128, blank=True)
fabDescription = models.CharField(max_length=8192)
fabImage = ProcessedImageField(upload_to='avatars',
processors=[ResizeToFill(250, 185)],
format='JPEG',
options={'quality': 60},blank=True)
fabImage_secondary = ProcessedImageField(upload_to='avatars',
processors=[ResizeToFill(500, 370)],
format='JPEG',
options={'quality': 60},blank=True)
fabVideo = EmbedVideoField(blank=True)
fabVideoURL = models.URLField(blank=True)
isPremium = models.BooleanField(default=False)
def __unicode__(self):
return self.fabName
答案 0 :(得分:2)
你需要为jQuery返回一个json对象才能理解。
试试这个:
import json
from django.forms.models import model_to_dict
@render_to ('companion/companionSub.html')
def topic(request, id):
ids = Catagories.objects.get(catagory=id)
topics = [model_to_dict(topic) for topic in Topics.objects.filter(fabCatagory_id=ids.id)]
topic_list = json.dumps({'topics':topics})
return HttpResponse(topics_list)