Как передать данные таблицы из шаблона в Django нажатием кнопки / отправить? - PullRequest
0 голосов
/ 03 июля 2019

В моем шаблоне есть поле поиска, в котором отображаются результаты в таблице. В таблице с каждым результатом я хотел бы разместить кнопку «+», которая позволит пользователю сохранить эту строку результатов в своем профиле.

Вот как выглядит страница: https://imgur.com/txKSuj0

Соответствующий фрагмент моего шаблона:

<form action="{% url 'foodlog:detail' foodlist.id %}" method="post">
    {% csrf_token %}
    {{ form2 }}
    <input type="submit" name="search" value="Search">
</form>


{% if foodResults %}
<table>

    <th>Food</th>
    <th>Calories per 100 grams</th>
    <th></th>

{% for x, y inResults %}
    <tr>

    <td>{{ x }}</td>
    <td>{{ y }}</td>    
    <td> <input type="submit" name="add" value="+" method = "post"> </td>

    </tr>>
{% endfor %}

</table>

{% endif %}

Соответствующий фрагмент моего взгляда:


    if request.method == 'POST':
        if 'add' in request.POST:
             #psuedo code
             #object.create(food=[buttonrow, firstheader], calories=[buttonrow, secondheader])
             #object.save()

Я также не знаю, почему эти «<<<<<» появляются на странице, как показано на рисунке. </p>

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Я следовал совету nigel222, за исключением того, что поместил данные под атрибутом «name» и сохранил «value» как «+».request.POST имеет имя как 2-й ключ

html

<table>

{% for x, y in Results %}
    <tr>

    <td>{{ x }}</td>
    <td>{{ y }}</td>    
    <td>    
        <form action="{% url view %}" method="post">
            {% csrf_token %}
            <input type="submit" name="{{ x }}|{{ y }}" value="+"> 
        </form> 
    </td>

    </tr>>
{% endfor %}

</table>

view

if request.method == 'POST':
    if '+' in request.POST.values():
        pair = [key for key in request.POST.keys()][1].split("|")
        #pair will be a list containing x and y
        object.create(thing1=pair[0], thing2=pair[1])
        object.save()

0 голосов
/ 03 июля 2019

Если идея заключается в том, что нажатие кнопки в строке таблицы отправит данные из этой строки в Django, тогда вам потребуется Javascript для обработки onClick, чтобы вставить данные из строки в поля формы перед отправкой.,В качестве альтернативы, вместо value="+" заполните что-то уникальное для каждой строки.Например, сделайте Results набором запросов, возвращающим, скажем, Product объекты, сделайте шаблонный цикл for итерируемый по этим объектам, и тогда вы можете сделать value="{{product.id}}".Затем вы извлекаете это значение непосредственно из request.POST в своей функции просмотра (и не забудьте проверить, что оно действительно соответствует существующему продукту, прежде чем он может вызвать сбой вашего кода!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...