2010-07-15 1 views
1

Я пытаюсь написать свою первую CMS в Django. До сих пор мне удалось получить систему вверх и работать подобно flatpages, но немного более гибкой. У меня есть два вопроса о том, как я приближаюсь к структуре CMS:Помогите с написанием пользовательской CMS в Django

Во-первых, я храню теги HTML с текстовым содержимым в базе данных Postgres. Я видел много сообщений, говорящих, что это не должно быть сделано по соображениям безопасности. Если HTML не должен быть сохранен с текстом, то как вы вставляете в контент информацию, подобную полужирным шрифтам, абзацам и изображениям?

Во-вторых, я пробовал проверять многочисленные системы управления контентом (в основном, PHP) на то, как они работают с структурами каталогов. Например, у меня может быть страница программирования, которая появляется в категории «компьютеры». На статической странице я бы просто создал каталог под названием «компьютеры» и разместил статическую страницу программирования внутри этого каталога. Как смоделировать структуры каталогов, подобные внутри CMS? Я не могу найти какую-либо информацию в любом месте под структурами CMS.

Спасибо за любые советы ....

+1

Два вопроса должны быть опубликованы как два отдельных вопроса, так как вы можете принять ответы на каждую половину от двух отдельных ответчиков. –

ответ

2
  1. Сохранение HTML-теги не является по своей сути небезопасно. Вам просто нужно очистить их от опасного содержимого, прежде чем помещать их в базу данных.

  2. Ваша модель страницы должна содержать информацию о категории. Затем, когда вы показываете категорию, вы будете запрашивать свои страницы по категориям, чтобы все страницы компьютеров отображались на странице компьютера.

0

Разделите это на 2 отдельных вопроса в будущем.

  1. Хранение HTML в порядке. Когда вы выводите его, обязательно используйте | safe в шаблонах. Если вы действительно хотите быть придирчивыми, вы можете избежать хранения с помощью http://en.wikipedia.org/wiki/Textile_%28markup_language%29 или http://en.wikipedia.org/wiki/Markdown. Они - редакторы wysiwig, которые делают все ваши проблемы.

  2. Вы можете создать модель категории и все свои страницы с помощью ForeignKey для этой модели. Одним из наиболее гибких решений, которые я нашел в том, чтобы использовать тег, поэтому страница может иметь несколько тегов и таким образом подпадает под несколько «Категорией» http://code.google.com/p/django-tagging/

Надеется, что это помогает.

+0

Спасибо Tudorizor. По-видимому, существует большая нехватка информации «inbetween» для программирования в Django. Никогда не было никаких указаний относительно того, как структурируются такие вещи, как CMS, а затем, когда кто-то задает вопрос, ответ (например, мой HTML-код) обычно похож на «вы никогда не должны класть HTML в базу данных». Этот вид закрывает промежуточных программистов и не помогает начинающим улучшить. – Boragora

+0

Существует не так много документов, потому что ограничений не существует. Тебе решать. Не бойтесь делать неправильный выбор, особенно если вы делаете TDD. – Tudorizer