Я конвертирую сайт WordPress в сайт Django. Мне нужно сохранить структуру URL для старых сообщений, но иметь новую структуру для новых сообщений. Я сделал это, создав 2 URL, установив дату в settings.py, затем установив абсолютный URL следующим образом:
urls.py
url(r'^reviews/archives/(?P<pk>\d+)$', PostDetail.as_view(), name="oldpost_view"),
сообщений / urls.py
url(r'^(?P<slug>[-\w]+)$', PostDetail.as_view(), name="post_view"),
сообщений / models.py
@property
def is_old_post(self):
wp_date = settings.WP_ARCHIVE_DATE
if self.post_date.date() < wp_date:
return True
# return False
@models.permalink
def get_abs_url(self):
if self.is_old_post:
return ('oldpost_view', (), {
'pk': self.id,
}
)
else:
return ('post_view', [str(self.url_slug)])
Я использую один вид для 2 URL:
class PostDetail(DetailView):
model = Post
slug_field = 'url_slug'
template_name = "posts/detail.html"
Все это прекрасно работает. Теперь мне нужно предотвратить рендеринг новых постов по ссылке oldpost_view и наоборот. Я знаю, что могу переопределить «get» и использовать reverse для этого, но как я могу определить, с какого URL пришел запрос? Какой самый эффективный и СУХОЙ способ сделать это?