Не удается получить данные формы в функции просмотра: Django - PullRequest
0 голосов
/ 16 января 2019

Мне нужно отправить строку в функцию просмотра через выпадающее меню и кнопку отправки.

в моем шаблоне у меня есть:

<form action="{% url 'exec_task' %}" method="post">
    {% csrf_token %}
    <select id="select_task" form="select_task" name="select_task">
        {% for task in available_tasks %}
          <option id="selected_task" value="{{ task }}">{{ task }}</option>
        {% endfor %}
    </select>
    <input class="button" type="submit" value="Run Selected Task">
</form>

в моем представлении функции у меня есть:

def exec_task(request):
  if request.method == 'POST':
    task = request.POST.get('select_task')
    print(task)
    getattr(tasks, task)(0)
  return redirect('management')

print (task) всегда выходит как None, что выдает ошибку, когда я пытаюсь вызвать его через getattr в следующей строке.

Я прочитал все вопросы и руководства, которые я могу найти по этому вопросу, и я не знаю, что я делаю неправильно, но когда я печатаю объект request.POST, все, что я получаю, это токен csrf. В QueryDict больше ничего нет.

Есть идеи?

1 Ответ

0 голосов
/ 16 января 2019

Как указано в комментариях, удалите

form="select_task" из выбранного тега.

Таким образом, окончательный выбор тега / HTML будет.

<form action="{% url 'exec_task' %}" method="post">
    {% csrf_token %}
    <select id="select_task" name="select_task">
        {% for task in available_tasks %}
          <option id="selected_task" value="{{ task }}">{{ task }}</option>
        {% endfor %}
    </select>
    <input class="button" type="submit" value="Run Selected Task">
</form>
...