Как сохранить данные POST в Django? - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть код, подобный следующему:

<form method="post">
    <!-- INPUTS -->
    <a href="{% url 'app:edit' person.id %}" class="btn btn-gradient-primary">Edit Person</a>
    <a href="{% url 'app:delete' person.id %}" class="btn btn-light">Delete Person</a>
</form>

Удаление работает, потому что в представлении delete мне нужно только person.id, но редактирование человека не работает, потому что данные публикации (т.е. данные из полей ввода) теряется при нажатии на кнопку.

Как мне это исправить?

Ответы [ 2 ]

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

вы можете использовать кнопку отправки, чтобы отправить форму, а не ссылку

попробуйте что-то вроде:

<form action="{% url 'app:edit' person.id  %}">
      
      <button type="submit">edit</button>
</form>
0 голосов
/ 21 февраля 2020

Ваша проблема в том, что вы на самом деле не отправляете форму.

Вы используете две ссылки и отправляете данные на URL, но вы не отправляете данные из формы. Это связано с тем, как работают формы HTML, когда вы нажимаете на ссылку, она перенаправляет на страницу, но не отправляет данные.

Что вам нужно, это кнопка отправки для вашей формы, что-то вроде этого

<form method="post" action="{% url 'app:edit' person.id %}">
    <!-- INPUTS -->
    <button type='submit' class="btn btn-gradient-primary">Edit Person</button>
    <a href="{% url 'app:delete' person.id %}" class="btn btn-light">Delete Person</a>
</form>

Этот код теперь будет использовать HTML формы для отправки данных в запросе по почте, к которому можно получить доступ в Django через представление, получающее его. Пример кода:

class EditPersonView(View):
  def post(request, person_id):
    form = forms.Person(request.POST)
    if form.is_valid:
      # 'name' is the input of your form
      name = form.cleaned_data['name']

Это базовый код вида c, я настоятельно рекомендую прочитать документацию Django по написанию представлений , а также ознакомиться с концепциями HTML, прежде чем продолжить .

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