P
March 15, 2023, 12:13 p.m.

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

Добрый день! Я не использую формы Джанго, а провожу добавление записи с помошью 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

Do you like it? Share on social networks!

1
Evgenii Legotckoi
  • March 15, 2023, 3:08 p.m.

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

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

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

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    • Last comments
    • Evgenii Legotckoi
      March 9, 2025, 9:02 p.m.
      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
    • VP
      March 9, 2025, 4:14 p.m.
      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
    • ИМ
      Nov. 22, 2024, 9:51 p.m.
      Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    • Evgenii Legotckoi
      Oct. 31, 2024, 11:37 p.m.
      Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    • A
      Oct. 19, 2024, 5:19 p.m.
      Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html