gpt4 book ai didi

python - 在 HTML 上使用 Django 字典

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:57 25 4
gpt4 key购买 nike

假设您的 View 中有一本这样的字典

CHOICES = (
(0, "Numeric"),
(1, "String"),
(2, "Boolean"),
(3, "Date"),
)

稍后在 View 中,我将字典作为上下文传递给模板。像这样:

编辑1:

# type is a int
type = 2
ctx = {'choices':CHOICES, 'type':dict(type)}

问题是我无法解析 HTML 格式的字典。在此示例中,我想返回字符串 "Boolean"这是我的片段:

{{ choices[type] }}

我该如何解决这个问题?

我认为有一个解决方案,使用 for 循环,然后将变量与类型进行比较,但代码太多了。或者我可以传递字符串而不是整个字典,但这不是我想要的。稍后我会将它与类型数组一起使用,因此不能使用最后一个解决方案。

编辑2:

好的。为了简单起见...

在 models.py 中

class AttributeType(models.Model):
name = models.CharField("Name", max_length=100)
description = models.CharField("Description", max_length=100)
choice = models.IntegerField("Choice")
def __unicode__(self):
return self.name

假设我已经用一些随机值填充了数据库。

在views.py中:

def list_attribute_types(request):
attribute_types = AttributeType.objects.all()
# Here we should add the dict to the ctx (?)
ctx = {'attribute_types':attribute_types}
return render_to_response('des/attribute_type/list_attribute_types.html', ctx, context_instance=RequestContext(request))

在我的list_attribute_types.html中:

{% extends "index.html" %} {% block title %}SGC - Administración de Tipo
de Atributo{% endblock %} {% block content %}

<div class="jumbotron">
<div class="bs-example">
<h1>Administración de Tipo de Atributos</h1>
<a class="btn btn-sm btn-default" href="{% url 'create_attribute_type' %}"><span
class="glyphicon glyphicon-plus"></span>Crear Tipo de Atributos</a> <br>
<br>
{% if attribute_types %}
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>Nombre de Tipo de Atributos</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
{% for attribute_type in attribute_types %}
<tr>
<td>{{ attribute_type.id }}</td>
<td>{{ attribute_type.name }}</td>
<!-- Here should be the choice parsed to string name{{ choices[attribute_type.choice] }}-->
<td><a class="btn btn-sm btn-default"
href="{% url 'modify_attribute_type' id_attribute_type=attribute_type.id %}"><span class="#"></span>
Modificar</a></td>
<td><a class="btn btn-sm btn-default"
href="{% url 'delete_attribute_type' id_attribute_type=attribute_type.id %}"><span
class="glyphicon glyphicon-trash"></span> Eliminar</a></td>
<td><a class="btn btn-sm btn-default"
href="{% url 'visualize_attribute_type' id_attribute_type=attribute_type.id %}"><span
class="glyphicon glyphicon-search"></span> Visualizar</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<h3>No existen Tipo de Atributo</h3>
{% endif %}
</div>
</div>
{% endblock %}

当我需要传递像这样的特定模型的列表时,主要问题就开始了。有什么想法如何将 attribute_type.choice int 值转换为其各自的字符串值吗?

最佳答案

CHOICES 不是字典 - 只需使用字典文字:

CHOICES = {
0: "Numeric",
1: "String",
2: "Boolean",
3: "Date",
}

那么最简单的选择是在代码中进行查找,而不是在模板级别:

ctx = {'choice': CHOICES[type]}

在模板中使用变量作为键 isn't supported in django (故意地)。有多种方法可以解决此问题,但最好的方法是在您的 View 中执行此操作,而不是在模板中执行此操作(如上所述)。

关于python - 在 HTML 上使用 Django 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23571642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com