Как организовать гладкий редирект в Django для нового Url-имени принципала
Я хочу изменить систему формирования url на своем сайте. Старые URL (которые индексировались поисковыми системами и сайтами, строящими ссылки) имеют вид: https://<hostname>/<old_site_section_name>/<id>/
Я хочу изменить на: https://<hostname>/<new_site_section_name>/<product_brand-name>/
Итак, индексируемый url теперь выглядит так: https://allgid.ru/Mnt/4149
и должен быть в будущем как: https://allgid.ru/Monitor/acer-v227qabmix
как сделать редирект в urls.py
в Django:
Теперь там:
urlpatterns = [
path('<slug:cat_>/<slug:product_>', views.page_new_Product, name='product'),
...
]
Могу ли я использовать некоторое регулярное выражение непосредственно в urlpattern
вот так:
path(r'^\+\/\d+$', RedirectView.as_view(url='<new_url>', permanent=True))
Но как я могу получить это re r'^\+\/\d+$'
и передать его как аргумент некоторой функции; эта функция подключится к моей базе данных, получит <new_site_section_name>
по r'^\+
части re и <product_brand-name>
по \d+
части re, таким образом 'id' модели (таблицы в db) и вычислит правильный новый url как: /Monitor/acer-v227qabmix
, чтобы поместить его на место <new_url>
в RedirectView
.
Могу ли я сделать это как:
path(r'^\+\/\d+$', My_Function())
и это My_Function
возвращает RedirectView.as_view(url='<new_url>', permanent=True)
? Будет ли это работать?
Или есть какой-то другой способ сделать это?