P
15 березня 2023 р. 12:13

Почему не работает редирект?

Добрый день! Я не использую формы Джанго, а провожу добавление записи с помошью ajax. В общем, суть такая. Добавляю в таблицу реквизиты документа (номер, дата и т.д.). После сохранения хочу перейти на страницу с этим же документом, чтобы продолжить редактирование - добавление табличной части и т.д. А редирект не срабатывает...
Вот часть кода. Редирект на home просто в качестве примера:

  1. def JurnalOst(request):
  2. podraz = Podraz.objects.get(pk=74)
  3. postav = Postav.objects.get(pk=9)
  4. obct = Obct.objects.get(pk=180)
  5. fio = Fio.objects.get(pk=5)
  6. jurnalost=Jurnal.objects.filter(oper=1)
  7. if request.method=='POST':
  8. nomerdoc1=request.POST['nomerdoc']
  9. datadoc1=request.POST['datadoc']
  10. print(nomerdoc1,datadoc1)
  11. newost=Jurnal()
  12. newost.nomerdoc=nomerdoc1
  13. newost.datadoc=datadoc1
  14. newost.podraz=podraz
  15. newost.postav=postav
  16. newost.obct=obct
  17. newost.fio=fio
  18. newost.oper=1
  19.  
  20. newost.save()
  21. un = Jurnal.objects.values()
  22. unit_data=list(un)
  23. print(newost.id)
  24. return redirect('home')
  25. #return JsonResponse({'status':1,'unit_data':unit_data})

Вот url

  1. urlpatterns=[
  2. path('', loginUser, name='loginUser'),
  3. # другие --------
  4. path('main/',index,name='home'),
  5. ]

А вот ajax

  1. <script>
  2. console.log('Script running!');
  3. $('#ost-form').on('submit',function(e){
  4. event.preventDefault();
  5. let _nomerdoc=$('#id_nomerdoc').val();
  6. let _datadoc=$('#id_datadoc').val();
  7. let _csr=$("input[name=csrfmiddlewaretoken]").val();
  8.  
  9. mydata={
  10. nomerdoc:_nomerdoc,
  11. datadoc:_datadoc,
  12. csrfmiddlewaretoken:_csr,
  13. }
  14.  
  15.  
  16.  
  17. console.log('Pressed');
  18. console.log(_nomerdoc);
  19. console.log(_datadoc);
  20. console.log(mydata);
  21.  
  22. $.ajax({
  23. url:'/JurnalOst/',
  24. method:"POST",
  25. data:mydata,
  26. dataType:"json",
  27.  
  28. success:function(data){
  29. if (data.status==1){
  30. console.log(data.unit_data);
  31. console.log('saved');
  32.  
  33. }
  34. }
  35.  
  36. });
  37. });
  38. </script>
2

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

1
Evgenii Legotckoi
  • 15 березня 2023 р. 15:08

Добрый день!
Через Ajax редирект и не будет работать. Вам нужно вернуть JsonResponse и обработать его в на клиентской стороне в скрипте вызов Ajax.

То есть вызвать редирект в этой функции

  1. success:function(data){
  2. if (data.status==1){
  3. console.log(data.unit_data);
  4. console.log('saved');
  5.  
  6. }

    Коментарі

    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, установлены. Кроме одного... Когда пытаюсь скомпилиров…