如何使用Django显示从数据库中检索到的数据

时间:2019-09-05 18:42:21

标签: django

我有一个与SQL Server连接的django项目,我试图从数据库中检索数据。

如果我尝试显示所有数据,它将正确运行并显示所有值。

但是如果我尝试在 html表中显示数据,则不会显示任何内容。

views.py

def connect(request):
    conn = pyodbc.connect(
        'Driver={ODBC Driver 17 for SQL Server};'
        'Server=DESKTOP-LPD1575\\SQLEXPRESS;'
        'Database=testDB;'
        'UID=test;'
        'PWD=test;'

    )

    cursor = conn.cursor()
    c = cursor.execute('SELECT * FROM Artist')
    return render (request,'connect.html',{"c":c})

connect.html

{% for row in c %}
    {{ row }}
{% endfor %}

html模板中的此代码可以工作并显示数据。

但是,如果我尝试执行以下操作,则将无法运行

<table align = "center">
        <tr align="center">
            <th>ID</th>
            <th>FolderNumber</th>
            <th>Title</th>

        </tr>
        {% for row in c %}
            <tr align="center">
                <td>{{ row.id }}</td>
                <td>{{ row.artistName }}</td>
                <td>{{ row.activeFrom }}</td>
            </tr>
        {% endfor %}
    </table>

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

结果中的每一行都是列表,而不是字典。您将需要使用索引而不是键:

   {% for row in c %}
        <tr align="center">
            <td>{{ row.0 }}</td>
            <td>{{ row.1 }}</td>
            <td>{{ row.2 }}</td>
        </tr>
    {% endfor %}

或更佳

   {% for row in c %}
        <tr align="center">
            {% for item in row %}
                <td>{{ item }}</td>
            {% endfor %}
        </tr>
    {% endfor %}

但是,实际上,您不应该直接运行SQL查询,而应该为表定义一个模型并以这种方式访问​​它。