python - 模板中的字段名称和值
问题描述
我想在我的模板中显示这样的内容:
姓名:约翰
年龄:18
城市: 纽约
例如,使用以下代码:
视图.py
def person_details(request,pk):
person = get_object_or_404(Person, id=pk)
return render(request, 'template.html', {'person': person, 'person_fields': person._meta.get_fields()})
模板.html
{% for field in person_fields %}
<div class="col-4 form-group">
<p><strong>{{ field.verbose_name }}:</strong> {{ person[ field.name ] }}</p>
</div>
{% endfor %}
这在python中可能吗?我问是因为我有一个包含大约 20 个字段的模型,并且在模板中对字段进行硬编码会有点困难。
解决方案
您可以使用 Django 的to-python 查询集序列化程序。
只需将以下代码放在您的视图中:
from django.core import serializers
data = serializers.serialize( "python", SomeModel.objects.all() )
然后在模板中:
{% for instance in data %}
{% for field, value in instance.fields.items %}
{{ field }}: {{ value }}
{% endfor %}
{% endfor %}
它的最大优点是它可以处理关系字段。
对于字段的子集,请尝试:
data = serializers.serialize('python', SomeModel.objects.all(), fields=('name','size'))
推荐阅读
- javascript - 在 Angular 的 next 中调用 .subcribe 中的 api
- javascript - 将输入添加到数组中并创建总和
- android - 通过单击按钮将应用内评论 API 实现到 android 应用中
- regex - REGEX 组合正则表达式字符串,然后找到除匹配项之外的所有内容
- go - 如何在报价单中查找和替换某些内容?
- mongodb - MongoDB:是否可以在更新查询中使用 $cond 运算符?
- r - foverlaps data.table || 错误 y 的键必须与 by.y 中指定的列相同
- javascript - 在Javascript中使用FETCH调用API时如何从服务器读取响应作为数字
- scala - 如何解决这个错误值 toDS is not a member of org.apache.spark.rdd.RDD?
- reactjs - 在我路由到另一个页面时,react useReducer 商店会丢失状态。useContext 仅加载初始状态