打印Django中Python函数创建的列表

2024-10-01 11:23:38 发布

您现在位置: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

Tags: django函数infrom模板列表forhtml
2条回答

可以将其包含在传递到视图内部渲染的对象中

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,您就可以开始比赛了

如果我没有弄错的话,您所要做的就是将dict传递给模板。 我还没有试过你的代码,但从一个快速的一瞥,这是我得到的

from mtgsdk import Card

def findcounters(request):
    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))
    #**********try adding the following code to the code ************
    ctx = { 'listofcounter':listofcounters }

    return render(request, 'yourtemplate.html', ctx}

相关问题 更多 >