首页 > 解决方案 > 在 Django 中打印由 Python 函数创建的列表

问题描述

我想获取由以下函数(计数器列表)创建的列表,并将其打印在 HTML Django 模板上。我知道在 HTML 中我需要

{% for i in listofcounters %}
<p> {{ something here maybe? }} </p>
{% endfor %}

但真正的困惑来自函数的去向(在views.py 中?还是模型?),然后是如何获取它以便HTML 页面可以读取它。

另外,我知道我可能正在做的并不是呈现这些信息的“最佳”方式,但这是为了让我通过创建一个我感兴趣的玩具项目来更好地理解 Django。这不是为了“真实”的网站。所以,在这么说的时候,我要求你不要提出任何超出我最初问题的建议。那就是“这是我的功能,我怎样才能以 HTML 形式获得它的输出?” 除非你觉得不可能这样做。

from mtgsdk import Card

def findcounters():
    listofcounters = []
    cards_from_set = Card.where(set='iko').all()
    for card in cards_from_set:
        if "counter target" in str(card.text).lower():
            listofcounters.append(card.name)
    listofcounters = list(dict.fromkeys(listofcounters))
    return listofcounters

标签: pythonhtmldjangofunction

解决方案


您可以将其包含在传递给视图内渲染的对象中。

from django.shortcuts import render
from mtgsdk import Card


def findcounters():
    listofcounters = []
    cards_from_set = Card.where(set='iko').all()
    for card in cards_from_set:
        if "counter target" in str(card.text).lower():
            listofcounters.append(card.name)
    listofcounters = list(dict.fromkeys(listofcounters))
    return listofcounters


def my_view(request):
    counters = findcounters()
    return render(request, 'file.html', {'counters': counters})

然后将此视图导入 url,您就可以参加比赛了!


推荐阅读