Python/Jinja2 - 使用 HTML 语法(Django)通过 python 生成的渲染列表出现问题

标签 python html-table django-views rendering jinja2

刚刚学习 python、Jinja 等,你的帮助会很大! 我的 Python 程序提取数据并将其放入列表形式。我的目标是在一个html表格中在线显示每行数据的三个部分。我试图通过使用字符串替换和 html 语法来做到这一点。 3 变量应该位于名称、价格和数量选项卡下。结果是这样的:

下面是我创建格式的方法。我确定我呈现代码的方式完全符合我输入的内容,即 html 语法,但我不确定如何输入数据以便识别 html 语法

    card_list = []
    card_info = "<tbody> \
                    <tr> \
                        <th scope='row'>1</th> \
                        <td>{0}</td> \
                        <td>{1}</td> \
                        <td>{2}</td> \
                    </tr> \
                 </tbody>".format(card_name, buy_price, quantity)
                # 3 variables are one line of a list of data
    card_list.append(card_info)
    return card_list

在 Django view.py 中,我这样渲染列表:

from Buylist.buy import get_data
data = get_data(ixalan)
def card_data(request):
    return render(request, 'buylist/basic.html', {'content':data})

使用 Jinja 的 HtML 看起来像:

{% extends "buylist/header.html" %}

{% block content %}

    <table class="table">
  <thead class="thead-inverse">
    <tr>
      <th>#</th>
      <th>Name</th>
      <th>Price</th>
      <th>Quantity</th>
    </tr>
  </thead>

      # For loop getting data from card_data is here
  {% for c in card_data %}
    {{c}}
  {% endfor %}
</table>
{% endblock %}

如果有任何帮助,我将不胜感激!非常感谢!

最佳答案

最好将 HTML 代码保存在模板中,而不是从 Python 生成它。您可以从 Jinja 模板访问嵌套数据结构,例如元组或字典。以下是您如何使用字典完成此操作(元组可能更容易内存,但字典更易读):

  {% block content %}
      <table class="table">
    <thead class="thead-inverse">
      <tr>
        <th>#</th>
        <th>Name</th>
        <th>Price</th>
        <th>Quantity</th>
      </tr>
    </thead>

    {% for item in card_data %}
    <tbody>
      <tr>
        <th scope='row'>1</th>
        <td>{{item.name}}</td>
        <td>{{item.price}}</td>
        <td>{{item.quantity}}</td>
      </tr>
    </tbody>
    {% endfor %}
  </table>
  {% endblock %}

你可以把你的数据放在dicts中并以同样的方式传递它:

data = [  
    {'name': 'Card 1 Name', 'price': 'Card 1 Price', 'quantity': 'Card 1 Quantity'},
    {'name': 'Card 2 Name', 'price': 'Card 2 Price', 'quantity': 'Card 2 Quantity'},
    {'name': 'Card 3 Name', 'price': 'Card 3 Price', 'quantity': 'Card 3 Quantity'},
]

 render(request, 'buylist/basic.html', {'card_data': data})

关于Python/Jinja2 - 使用 HTML 语法(Django)通过 python 生成的渲染列表出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717891/

相关文章:

python - Django:在页面中列出每个类别的产品

python - Tensorflow:自定义操作需要定义哪些梯度?

python - 在 Python panda 中从两列创建数据框时出错

python - 如何记录 Django REST Swagger 2 中的参数?

python - Boost.Python 中的基类和派生类

html - 以水平布局显示缩略图

php - codeIgniter View 文件中表格格式的特定方式的数组表示?

html - 将 html 表提取到 R 中,但在多页 html 中跳过具有三行/行的特定列中的特定元素(<br>)

python - Django 中的日期验证错误

python - 破坏 {% load range_template_tags %} 上的模板