jquery - Django通过ajax get在模板中渲染字典对象

标签 jquery python ajax django dictionary

嘿,大家好,我正在尝试弄清楚如何通过 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  

最佳答案

您需要返回一个 json 对象以便 jQuery 理解。

试试这个:

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)

关于jquery - Django通过ajax get在模板中渲染字典对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174123/

相关文章:

javascript - 删除警报框 - "Do you want to leave this site?"

javascript - 不同页面的 jQuery/JS - 这样做的最佳方式?

javascript - jQuery AJAX 调用 PHP 类函数

ajax - backbone.js 的跨域 CORS 支持

python - Python 3 时来自 BeautifulSoup 的 "illegal multibyte sequence"错误

jQuery 在请求正文中发布有效的 json

javascript - 表单提交后加载模态

javascript - 如果它是外部链接,如何将 rel = "nofollow"添加到 CKEditor 中的链接

python - 如何迭代 numpy 矩阵和填充值?

python - Peewee ORM - 具有多对多关系的过滤结果