为了账号安全,请及时绑定邮箱和手机立即绑定

在Django的模板中传递字典

在Django的模板中传递字典

白衣非少年 2022-11-09 16:53:22
我需要将我在 views.py 中生成的字典传递给 Django 中的模板。模板{% for server in servers %}        <div class="hs-item set-bg" data-setbg="{% static 'img/slider-1.jpg' %}">            <div class="hs-text">                <div class="container">                    <h2>The Best <span>Games</span> Out There</h2>                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec malesuada <br> lorem maximus mauris scelerisque, at rutrum nulla dictum. Ut ac ligula sapien. <br>Suspendisse cursus faucibus finibus.</p>                    <a href="#" class="site-btn">Read More</a>                </div>            </div>        </div>{% endfor %}视图.pydef get_data(request, server_name):   server=Server.objects.get(Name=server_name)   address = (server.IP, server.Port)   connect = "steam://connect/"+str(server.IP)+":"+str(server.Port)   queryset=a2s.info(address, timeout=3.0, encoding=None)   max_player=queryset.max_players   current_player=queryset.player_count   current_map=queryset.map_name   playerdata={       'map': current_map,       'players': current_player,       'adress': connect,       'max': max_player,   }   return HttpResponse(playerdata)模型.pyclass Server(models.Model):Name = models.CharField(max_length=100)IP = models.TextField()Port = models.IntegerField()Image = models.ImageField(default='default.jpg', upload_to='server_pics')def __str__(self):    return str(self.Name) if self.Name else ''我在这里尝试做的是遍历我的模板中的所有服务器,然后,对于每个服务器,使用 python 脚本查询所述服务器,将值放入字典中,即 player_count、current_map 等,然后显示我的模板中的这些信息。我的问题是,我不知道如何将所述字典返回到模板。在我看来,我已经使用 ChartJS 做了类似的事情JsonResponse。但是,我不知道如何在这里返回字典,因为我在这里没有使用 JS。在此先感谢您的帮助
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

执行此操作的三种方法是:

1) 使用render()快捷方式将上下文映射到 HTML

2) 使用 AJAX 获取 python dict/json 响应,并使用 JS 将其合并为 html

3)您可以将两者结合起来,并使用 AJAX/JSrender()从服务器获取与上下文合并的响应,然后将其附加到 DOM。

对于选项 1,您将使用return render(request, 'template.html', context)快捷方式,这会将所有context变量合并到您的模板{{ variable }}中。

对于选项 2,您可以使用 jQuery ( $.ajax({})) 或 vanilla JS ( fetch()) 来获取 JSONResponse,在 JS 中解析它,然后将值单独合并回您认为合适的 HTML。

对于选项 3,您将再次使用 jQuery 或 vanilla JS,但这次您的响应将通过上下文合并和呈现render(),并作为页面的整个部分返回,然后您可以将其附加到您想要的页面上的任何位置。


查看完整回答
反对 回复 2022-11-09
  • 1 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号