Программно создавать перенаправления в трясогузке

Есть ли способ программно создавать функционирующие объекты Redirect в Трясогузке?

Я пытаюсь сделать очевидное (наивно создавая объект):

Redirect.objects.create(old_path='/test', redirect_link='https://stackoverflow.com')

Это создает Redirect, который виден в панели администратора Wagtail, однако переход к /test просто 404s без перенаправления.

Однако, если я затем сохраню Redirect из панели администратора, он неожиданно заработает.

Есть ли какая-то особая логика после сохранения, которую мне нужно запустить, чтобы активировать перенаправление? Я просмотрел источник и ничего не нашел.


person Josh    schedule 04.12.2019    source источник
comment
Ваш примерный код отлично работает, когда я его пробую. Существует некоторый код очистки, в основном для устранения отсутствующих/лишних косых черт (normalise_path, github.com/wagtail/wagtail/blob/master/wagtail/contrib/), который не будет вызываться автоматически при его создании через Redirects.object.create — возможно, когда вы пробовали это, вы использовали значение для old_path, которое не было действительным, пока не была применена эта очистка?   -  person gasman    schedule 05.12.2019
comment
Спасибо. Я снова попробовал свой код и, как ни странно, он работает. Я думаю, что, возможно, у меня были проблемы с кэшированием DNS, когда я тестировал изначально.   -  person Josh    schedule 05.12.2019


Ответы (1)


Ошибка пользователя. Я полагаю, что столкнулся с проблемами кэширования DNS, из-за которых перенаправление не работало. Мой исходный код теперь работает нормально.

person Josh    schedule 05.12.2019
comment
К сожалению, использование точно такого же кода как часть тестирования django не работает, вы получаете ошибку 404 распознавателя django, поэтому просто ошибка пользователя не кажется, что она ее покрывает. - person Mike 'Pomax' Kamermans; 30.11.2020