如何从模板中的get_object_or_404的对象中获取键,值对,并将其作为上下文从视图传递到模板?
#views.py
def detail(request):
unknown = get_object_or_404(UnknownModel)
return render(request, 'app/display.html', { 'some_data':unknown })
在app / display.html中,我一直在尝试各种方法:
{{ some_data }}
{{ some_data.keys }}
{{ some_data.items }}
{% for key, value in some_data.items %}
{{ key }} - {{ value }}
{% endfor %}}
,但无济于事。 如果我知道这些字段,则可以按以下方式轻松访问,但事实并非如此
{{ some_data.field_1 }}
答案 0 :(得分:1)
在您的情况下,unknown
是UnknownModel
模型的实例。
在模板中,您尝试遍历此实例字段,但是items
方法有效
字典,而不是您的模型。您可以在模型中提供items
方法,以返回包含所需字段的字典或使用以下代码段:
{% for key, value in some_data.__dict__.items %}
{{ key }} - {{ value }}
{% endfor %}}
上面的方法将显示许多与您的实例相关的内部数据。另一种(更好)的方法是将模型实例转换为视图中的字典,然后将其传递给模板。为此,可以使用django.forms.models.model_to_dict
方法。
from django.forms.models import model_to_dict
def detail(request):
unknown = get_object_or_404(UnknownModel)
return render(request, 'app/display.html', {'some_data':model_to_dict(unknown)})