Как правильно распаковать кортеж и показать его? - PullRequest
1 голос
/ 04 февраля 2020

У меня ['34242342', 'Ford focus 2015', 'Chevrolet Impala 1960', 'Ford focus 2012', 'Dodge charger 2010', 'Dodge', 'New fiat punto 2012'] создано из: (('34242342',), ('Ford focus 2015',), ('Chevrolet Impala 1960',)) (не полностью).

И я хочу отобразить его в моем шаблоне:

{% for p in full %}

 <form action="{% url 'table' %}" method="GET">


  <input style="background-color:#2F4050;color:#A7B1C2; margin-top:5px;border: none; border-color: rgba(0,0,0,0.9);" type="submit" value={{ p }} name="button">

    </form>

{% endfor %}

Но вместо отображения полных элементов он обрезает его:

34242342
Ford
Chevrolet
Ford
Dodge
New

Он отображает все правильно, если я называю такие элементы, как:

{% for p in full %}
{{p}}
{% endfor %}

Он обрезает элементы только в value варианте ввода.

ОБНОВЛЕНО

views.py:

db = MySQLdb.connect(host="192.168.4.200",
                         user="root",
                         passwd="123456",
                         db="store", charset="utf8")
    cur = db.cursor()


    cur.callproc('store')


    info = cur.fetchall()

    full = info

    new_list = []

    for tup in full:

        full = ",".join(tup)


        new_list.append(full)


    return render(request, 'table.html', {'full': new_list})

Простой запрос к базе данных и отображение данных.

1 Ответ

0 голосов
/ 04 февраля 2020

Вы можете распаковать кортеж из 1 кортежа с пониманием списка:

data = (('34242342',), ('Ford focus 2015',), ('Chevrolet Impala 1960',))
result = [item for item, in data]

Например:

>>> [item for item, in data]
['34242342', 'Ford focus 2015', 'Chevrolet Impala 1960']

Обратите внимание на запятую в item,, что приводит к распаковке 1-кортеж.

Если кортежи могут содержать больше элементов, вы также можете l oop над ними:

result = [subitem for item in data for subitem in item]

При этом, пожалуйста, сделайте , а не используйте .values_list(..) для извлечения данных. Получите объекты модели . Таким образом, логика c, реализованная в модели, сохраняется. Кроме того, настоятельно рекомендуется использовать Django ORM. Модели Django часто являются эффективными для работы с Django.

В шаблоне вы должны использовать кавычки для атрибута:

<input value=<b>"{{ p }}"</b> name="button"<
...