P
16 лютого 2023 р. 13:59

Можно ли обойтись без redirect() ?

Добрый день! На странице две формы, каждая со своим ID и сабмитом... Одна из форм (form2) показывается в модальном окне... Все хорошо работает, при нажатии на кнопку на странице отображается модальное окно, заполняется форма, все сохранаяется... Но! При сохранении во view стоит редерект на эту же страницу и она естественно, перерисовывается. Мне это не надо. Мне надо просто сохранить данные в модальном окне и закрыть его... Чем заменить redirect, чтобы просто остаться на этой же странице? Я пробовал return HttpResponseRedirect(request.META.get('HTTP_REFERER')), но это не то...
Вот часть view:

  1. if request.method == 'POST':
  2. form=NomForm(request.POST)
  3. form2=UnitForm(request.POST)
  4. print(request.POST)
  5. if form.is_valid():
  6. form.save()
  7. return redirect('NomList')
  8. if form2.is_valid():
  9. form2.save()
  10. return redirect('NomList')
  11. else:
  12. form=NomForm()
  13. form2=UnitForm()
  14. return render(request,'store/spr/NomList.html',{'title':"Номенклатура",'unit':unit,'form':form,'form2':form2,
  15. 'btn_caption': 'Добавить', 'brd_class': 'border-secondary',
  16. 'btn_class': 'btn-primary', 'pic_label': 'Номенкл.',
  17. 'base_url': 'NomList', 'update_url': 'NomUpdate',
  18. 'delete_url': 'NomDelete'})

Интересует return в form2. Как просто вернуться на страницу, не обновляя?

2

Вам це подобається? Поділіться в соціальних мережах!

4
Evgenii Legotckoi
  • 16 лютого 2023 р. 15:52

Добрый день! У меня для вас есть идея по поводу реализации вашего функционала.
Как я понял, вы вызываете модальное popup окно и делаете некоторые действия, которые потом возвращаетесь в предыдущую форму.
В прошлом году я реализовывал следующий функционал.

У меня есть посты и коллекции, при создании поста, я могу в форме поста создать коллекцию через popup окно, а потом новая коллекция автоматически добавляется в поле коллекция в форме поста.

То есть это работает как в админке Django.

Для этого я использовал готовую батарейку, которая называется django_addanother

Посмотрите её, может это вам подойдёт.

    P
    • 16 лютого 2023 р. 16:18

    Спасибо, посмотрю. Да, задача у меня, как вы поняли, следующая: отобразить страницу, вызвать модальное окно с формой, ввести данные,сохранить их в таблицу и закрыть модальное окно. Всё! Просто закрыть и не обновлять исходную страницу... Вот с этим и мучаюсь... Просто хотелось узнать, можно ли только стандартными инструментами Джанго это реализовать. Казалось бы, чего проще - вернутся туда, откуда и пришел... Наверное, без сторонних пакетов или того же Ajax эта задача нерешаема...
    Спасибо!

      Evgenii Legotckoi
      • 16 лютого 2023 р. 16:23

      Здесь точно нужно использовать Ajax. Посмотрите тот сторонний пакет, он не очень сложно настраивался, насколько помню.

        P
        • 16 лютого 2023 р. 16:25

        ок

          Коментарі

          Only authorized users can post comments.
          Please, Log in or Sign up
          • Останні коментарі
          • Evgenii Legotckoi
            16 квітня 2025 р. 17:08
            Благодарю за отзыв. И вам желаю всяческих успехов!
          • IscanderChe
            12 квітня 2025 р. 17:12
            Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
          • AK
            01 квітня 2025 р. 11:41
            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
          • Evgenii Legotckoi
            09 березня 2025 р. 21:02
            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
          • VP
            09 березня 2025 р. 16:14
            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…