已经看了一段时间了,我似乎无法弄清楚我做错了什么。
我有这样的看法
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 模板在实例化此类的对象时出错。
解决方法是使这个参数可选。现在一切正常。
