【问题标题】:Converting comma separated string to list, then display list in Django template将逗号分隔的字符串转换为列表,然后在 Django 模板中显示列表
【发布时间】:2019-11-23 19:11:23
【问题描述】:

我正在尝试输入一个逗号分隔的字符串值,将这些项目存储在列表中以供临时显示并在模板中使用。我目前无法将每个逗号分隔的字符串值存储在列表中,然后在模板中显示该列表。

用户在数据库 ModelForm 字段中输入类似的内容(不带引号):

来自ModelForm 的示例输入

inputs = models.CharField(max_length=200)

然后用户会输入一些效果

"length_ft,depth_in,width_in"

减去引号。

模板中的以下排序工作:

{% for i in inputs_list %}
    {{ i }}
{% endfor %}

它不显示列表项列表,而是单独列出每个列表项的每个字母。我知道为什么,因为我去掉了逗号,但是我试图在每个 csv 项目中附加空白列表。

我不明白如何将项目从输入字符串中取出到列表中,然后显示在模板中。

views.py

def test_formula(request, formula_id):
    formula = Formula.objects.get(id=formula_id)
    inputs_list = []
    for inputs in formula.inputs:
        strip = inputs.strip(",")
        inputs_list.append(strip)

    context = {'formula': formula, 'inputs_list': inputs_list}
    return render(request, 'formulas/test_formula.html', context)

公式/test_formula.html

(这只是将每个字符分解成它自己的项目)

{% load static %}
{% block content %}

{% for i in inputs_list %}
{{ i }}
{% endfor %}


{% endblock content %}

公式\urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('test_formula/<int:formula_id>', views.test_formula, name='test_formula'),
]

【问题讨论】:

  • 我刚刚更新了希望现在更清楚了吗?

标签: python django list


【解决方案1】:

假设您有一串逗号分隔值,例如"length_ft,depth_in,width_in",请将您的代码更新为:

def test_formula(request, formula_id):
    formula = Formula.objects.get(id=formula_id)

    context = {'formula': formula, 'inputs_list': formula.inputs.split(",")}
    return render(request, 'formulas/test_formula.html', context)

基本上,您需要 str 方法 split 使用您作为分隔符字符串传递的参数返回字符串中的单词列表。

我还建议在模板的 for 中将变量 i 更改为 input

【讨论】:

  • 这完全解决了它。不过我不明白 - 为什么在通过 context 传递 formula.inputs.split(",") 时会起作用,但在以我在上面的 views.py 中显示的方式迭代 inputs_list 变量时不起作用?
  • @KevinW,我只是添加了进一步的解释。我希望它能澄清你的疑惑。否则,请告诉我。
  • @KevinW,我认为您的代码中的问题还在于您使用了 strip 方法,该方法返回删除了前导和尾随字符的字符串副本。
  • 啊哈!我想就是这样!太感谢了。我花了很多时间试图弄清楚这一点!
猜你喜欢
  • 2013-02-04
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2014-08-24
  • 2020-04-04
  • 1970-01-01
相关资源
最近更新 更多