Django.contrib.flatpages без моделей
У меня есть несколько страниц с пустыми content
поле и их содержимое внутри шаблона template_name
поле).
Почему я использую django.contrib.flatpages
- Это позволяет мне обслуживать (в основном) статические страницы с минимальной конфигурацией URL.
- Мне не нужно писать мнения для каждого из них.
Почему мне не нужна модель FlatPage
- Я оставляю содержимое пустым и просто указываю путь к шаблону. Поэтому я могу использовать источник в файле;
- Я могу редактировать исходный код напрямую из файловой системы, без помощи сервера (например, администратора).
- Я могу воспользоваться подсветкой синтаксиса и другими функциями редактора.
- С моделью я должен поддерживать светильники для плоских страниц.
- Таким образом, данные для одной и той же сущности находятся в двух отдельных местах.
- Если я переместу содержимое внутри прибора, его будет сложнее редактировать.
- Даже если бы обслуживание приборов не было проблемой, мне все равно приходилось бы сбрасывать и загружать эти приборы снова и снова во время разработки.
Что я ищу
В принципе; избавиться от FlatPage
модель при сохранении contrib.flatpages
функциональность. Я не имею четкого представления, как это должно быть решено. Если есть чистый способ изменения (например, add_to_class
) FlatPages
чтобы получить информацию где-то, кроме базы данных, я бы предпочел это. Может быть, метаданные можно вставить в шаблоны, и тогда специальный менеджер, который читает эти данные, заменит менеджер по умолчанию FlatPages
,
Если я не предпочитаю ручное редактирование над функциональностью администратора для плоских страниц, как можно вывести базу данных из уравнения?
1 ответ
С использованием direct_to_template
общий вид будет намного проще. Вы можете использовать переданные параметры в одном представлении, чтобы указать фактический шаблон в urls.py, если вы не хотите добавлять запись для каждой страницы:
r'^foo/(?P<template_name>.+)/$','direct_to_template', {'template': 'foo_index.html'}),
Затем импортируйте шаблон в свой foo_index.html
:
{% include template_name %}