Разве не грубо получить плоские страницы через тег шаблона get_flatpages из его URL-адреса вместо идентификатора страницы?

Как вы можете прочитать по ссылке на Django или немного взломать, get_flatpages можно использовать следующим образом:

{% get_flatpages as flatpages %}
{% get_flatpages for someuser as flatpages %}
{% get_flatpages '/about/' as about_pages %}
{% get_flatpages prefix as about_pages %}
{% get_flatpages '/about/' for someuser as about_pages %}

Итак, если я хочу получить определенную страницу, мне нужно сделать это через ее URL или префикс, что несколько грубо, потому что мой код шаблона становится зависимым от данных, я имел в виду, если я изменяю URL определенной плоской страницы, то это необходимо изменить код моего шаблона тоже.

Более гибкой идеей было бы включение идентификатора для каждой страницы, который можно добавить, например, через раздел "Дополнительные параметры", чтобы на страницу можно было ссылаться через ее идентификатор, таким образом, мы могли бы сделать что-то вроде этого:

{% get_flatpages 'about' as about_pages %}

Что является более гибким и менее зависимым от данных, независимо от того, какой URL у страницы, обратите внимание, что мы могли бы изменить URL страницы, не изменяя код шаблона.

Есть ли что-то подобное в фреймворке? Конечно, я мог бы настроить это приложение или использовать стороннее приложение, но это не главное;-)

У вас есть другая идея, чтобы иметь дело с?

1 ответ

Решение

Нет, я не верю, что есть какая-то поддержка того, что вы просите в Джанго в настоящее время. Документы, на которые вы ссылаетесь для плоских страниц, гласят:

Плоская страница - это простой объект с URL, заголовком и содержимым. Используйте его для одноразовых страниц специального случая, таких как страницы "О программе" или "Политика конфиденциальности", которые вы хотите сохранить в базе данных, но для которых вы не хотите разрабатывать пользовательское приложение Django.

Мое прочтение таково: "Это тот самый минимум, который мы предоставляем, и если вы захотите больше, вам придется написать его самостоятельно". Я согласен с тем, что ваше предложение разрешить ссылаться на страницы с помощью символического имени (которое, возможно, по умолчанию соответствует их URL-адресу) является более гибким, но вам, вероятно, лучше поднять вопрос или обсудить его в списке рассылки, чем надеяться на разработчика происходит на ваш вопрос на Stackru.

В краткосрочной перспективе вы можете взглянуть на некоторые из готовых приложений Django, похожих на CMS. Django-page-cms является относительно легким (это относительно небольшое приложение само по себе, но имеет множество зависимостей), и вы можете выполнить то, что вам нужно: на каждую страницу ссылается ее слаг (так называемый url / name), но вы может определять псевдонимы / перенаправления на заданные страницы для произвольных URL.

Другие вопросы по тегам