Skip to main content
 首页 » 编程设计

python之未调用 Django 模板中的类属性

2024年08月26日26bonelee

已经看了一段时间了,我似乎无法弄清楚我做错了什么。

我有这样的看法

def format_guide_datasheet(request): 
    return render(request, 'input/format_guide_datasheet.html', {'readers': settings.INSTALLED_DATASHEET_READERS}) 

settings.INSTALLED_DATASHEET_READERS 是一个类数组:

from input.readers import ExcelReader 
 
INSTALLED_DATASHEET_READERS = [ExcelReader] 

ExcelReader 类:

class ExcelReader(Reader): 
    @staticmethod 
    def name(): 
        return 'Excel' 

问题是,我似乎无法在我的模板中调用这些类的任何属性。例如,在 input/format_guide_datasheet.html 中:

{{ readers }} 

正确输出

 [<class 'input.readers.ExcelReader'>]  

鉴于

{% for reader in readers %} 
<li> 
{{ reader }} 
{{ reader.name }} 
</li> 
{% endfor %} 

只输出 li 标签...

我试过同时使用基本属性、类方法和静态方法,但似乎没有任何效果...

有人知道出了什么问题吗?

谢谢!

请您参考如下方法:

我找到问题了,谢谢大家的帮助!

问题是,当在 django 模板中调用作为类的变量时,django 似乎会自动实例化它(就像在模板中调用函数时一样)。 input.readers.ExcelReader 的 init 函数有 1 个必需参数,这意味着 django 模板在实例化此类的对象时出错。

解决方法是使这个参数可选。现在一切正常。