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 %}
Другие вопросы по тегам