python - 在Django的模板中传递字典
问题描述
我需要将我在 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 %}
视图.py
def 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)
模型.py
class 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) 使用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()
,并作为页面的整个部分返回,然后您可以将其附加到您想要的页面上的任何位置。
推荐阅读
- r - 获取 RStudio Server 开源版本以使用替代 gcc 版本
- amazon-web-services - 在厨师中创建 cron
- entity-framework - 使用 DbContext 获取子项计数并映射到属性
- angular - 如何在 owl-date-time 组件上设置默认日期和时间
- python - 用于创建 Windows 服务的包
- azure - TFS 2018 AzureFileCopy 任务版本 2
- postgresql - 了解 SQL 查询复杂性
- java - 为什么字节数据类型用于文件 IO java?
- java - 依赖注入和从 XML 文件加载对象数据
- excel - 将多个工作表中的单元格范围复制到一张