Python Django:如何使用自定义模板标记动态获取字段值?
我正在编写一个通用模板标记,它可以根据模板文件中的用户输入动态返回模型的字段值。这个想法在《实用Django项目第二版》一书中提到过,但是这本书的版本得到了一个对象列表,我只想得到一个对象的值。我想获取站点设置(标题、标语等)并动态传递模板,这样我就不必再次编写代码来获取每个字段的值 以下是我迄今为止所做的工作 为模型定义admin.py(此处不包括,因为它不重要) 定义了一个模型: 定义了一个模板标记文件,注释行就是我卡住的地方 base.html中的模板查询:Python Django:如何使用自定义模板标记动态获取字段值?,python,django,dynamic,model,templatetags,Python,Django,Dynamic,Model,Templatetags,我正在编写一个通用模板标记,它可以根据模板文件中的用户输入动态返回模型的字段值。这个想法在《实用Django项目第二版》一书中提到过,但是这本书的版本得到了一个对象列表,我只想得到一个对象的值。我想获取站点设置(标题、标语等)并动态传递模板,这样我就不必再次编写代码来获取每个字段的值 以下是我迄今为止所做的工作 为模型定义admin.py(此处不包括,因为它不重要) 定义了一个模型: 定义了一个模板标记文件,注释行就是我卡住的地方 base.html中的模板查询: {% load general
{% load general_tags %}
{% get_site_att general.Naming title as title %}
<h1 id="branding">{{title}}</h1>
{% get_site_att general.Naming tagline as tagline %}
<h2 id="tagline">{{tagline}}</h2>
{%load general_tags%}
{%get\u site\u att general.将标题命名为title%}
{{title}}
{%get\u site\u att general.将标记行命名为标记行%}
{{tagline}}
我已经尝试了我能想到的所有可能的方法,但就是不能让它工作。非常感谢您的帮助。谢谢。我找到了解决方案: 在注释行中,使用以下代码:
var = self.model.objects.get(site_id__exact=current_site.id)
context[self.varname] = var.__dict__[self.field]#this will get the field's value dynamically, which is what I was looking for
Python中获取另一个变量中名称的属性的通常方法是使用
getattr
context[self.varname] = getattr(var, self.field)
这可能是一个可能的解决方案,如果你有任何其他的解决方案,请建议!或者更多的Django-ey,而不是var.uuu dict.[self.field],您可以使用var._meta.get.[field(self.field)
var = self.model.objects.get(site_id__exact=current_site.id)
context[self.varname] = var.__dict__[self.field]#this will get the field's value dynamically, which is what I was looking for
context[self.varname] = getattr(var, self.field)