Class 未调用 Django 模板中的属性
Class attributes in django templates not being called
已经看了一段时间了,我似乎无法弄清楚我做错了什么。
我有这样的看法
def format_guide_datasheet(request):
return render(request, 'input/format_guide_datasheet.html', {'readers': settings.INSTALLED_DATASHEET_READERS})
settings.INSTALLED_DATASHEET_READERS
是 classes:
的数组
from input.readers import ExcelReader
INSTALLED_DATASHEET_READERS = [ExcelReader]
ExcelReader
class:
class ExcelReader(Reader):
@staticmethod
def name():
return 'Excel'
问题是,我似乎无法在我的模板中调用这些 class 的任何属性。例如,在 input/format_guide_datasheet.html
:
{{ readers }}
正确输出
[<class 'input.readers.ExcelReader'>]
而
{% for reader in readers %}
<li>
{{ reader }}
{{ reader.name }}
</li>
{% endfor %}
只输出 li
个标签...
我已经尝试使用基本属性,class方法和静态方法,但似乎没有任何效果...
有人知道出了什么问题吗?
谢谢!
我把你上面的代码粘贴到一个框架 Django 1.7.3 应用程序中,它可以工作。我得到这个输出:
<li>
<input.readers.ExcelReader instance at 0x108a7ecf8>
Excel
</li>
上面代码中唯一缺少的部分是 Reader class,我将其声明为空 class:
class Reader:
pass
也许这在不同版本的 Django 中工作方式不同,或者您有一些额外的配置或代码覆盖了默认的 Django 功能。也许在您的应用程序中某处有另一个 'name' 属性的定义,它覆盖了 ExcelReader class 的静态 'name' 方法。无论是什么问题,都无法从问题中发布的信息来确定。
找到问题了,谢谢大家的帮助!
问题是,当在 django 模板中调用一个 class 的变量时,django 似乎会自动实例化它(就像在模板中调用函数时一样)。
然而,input.readers.ExcelReader
的 init 函数有 1 个必需参数,这意味着 django 模板在实例化此 class.[=11= 的对象时出错]
解决方法是使该参数可选。现在一切正常。
已经看了一段时间了,我似乎无法弄清楚我做错了什么。
我有这样的看法
def format_guide_datasheet(request):
return render(request, 'input/format_guide_datasheet.html', {'readers': settings.INSTALLED_DATASHEET_READERS})
settings.INSTALLED_DATASHEET_READERS
是 classes:
from input.readers import ExcelReader
INSTALLED_DATASHEET_READERS = [ExcelReader]
ExcelReader
class:
class ExcelReader(Reader):
@staticmethod
def name():
return 'Excel'
问题是,我似乎无法在我的模板中调用这些 class 的任何属性。例如,在 input/format_guide_datasheet.html
:
{{ readers }}
正确输出
[<class 'input.readers.ExcelReader'>]
而
{% for reader in readers %}
<li>
{{ reader }}
{{ reader.name }}
</li>
{% endfor %}
只输出 li
个标签...
我已经尝试使用基本属性,class方法和静态方法,但似乎没有任何效果...
有人知道出了什么问题吗?
谢谢!
我把你上面的代码粘贴到一个框架 Django 1.7.3 应用程序中,它可以工作。我得到这个输出:
<li>
<input.readers.ExcelReader instance at 0x108a7ecf8>
Excel
</li>
上面代码中唯一缺少的部分是 Reader class,我将其声明为空 class:
class Reader:
pass
也许这在不同版本的 Django 中工作方式不同,或者您有一些额外的配置或代码覆盖了默认的 Django 功能。也许在您的应用程序中某处有另一个 'name' 属性的定义,它覆盖了 ExcelReader class 的静态 'name' 方法。无论是什么问题,都无法从问题中发布的信息来确定。
找到问题了,谢谢大家的帮助!
问题是,当在 django 模板中调用一个 class 的变量时,django 似乎会自动实例化它(就像在模板中调用函数时一样)。
然而,input.readers.ExcelReader
的 init 函数有 1 个必需参数,这意味着 django 模板在实例化此 class.[=11= 的对象时出错]
解决方法是使该参数可选。现在一切正常。