Джанго: Установка одной страницы в качестве главной страницы - PullRequest
0 голосов
/ 09 февраля 2010

Я новичок в Django, и я хочу сделать что-то, что я не знаю, как это сделать.

У меня есть модель SimplePage, которая просто обозначает веб-страницу, которая видна на сайтеи чье содержимое можно редактировать в админке.(Я думаю, что это похоже на FlatPage.)

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

Что было бы хорошим способом пометить страницу как главную страницу?Я рассмотрел вопрос о добавлении логического поля is_main_page в модель SimplePage, но как я могу убедиться, что только одна страница может быть помечена как главная страница?

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Создать параметр MAIN_PAGE внутри settings.py с первичным ключом. Затем создайте представление main_page и получите объект main_page из базы данных, используя настройку.

EDIT:

Вы также можете сделать это следующим образом: добавить модель, которая будет ссылаться на SimplePage и указывать на главную страницу. В режиме просмотра главной страницы вы получите нужную SimplePage, и ее может легко изменить любой пользователь django admin.

0 голосов
/ 09 февраля 2010

Самый простой способ сделать это - создать логическое значение, как вы предложили, и использовать сигнал pre_save для удаления логического значения из всего остального в базе данных.

from django.db.models import signals
def simple_page_pre_save(sender, instance, **kwargs):
    if instance.is_main_page == True:
        SimplePage.objects.update(is_main_page=False)

signals.pre_save.connect(simple_page_pre_save, sender=SimplePage)

Таким образом, всякий раз, когдаВы сохраняете SimplePage, он увидит, истинно ли is_main_page, и установлено ли is_main_page для каждой другой страницы на False.Еще предстоит проделать определенную работу для обеспечения того, чтобы всегда был один is_main_page, но это зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...