Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2010 11:44:50

Moroznui
От:
Зарегистрирован: 2010-10-12
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Есть сайт, в основном на flatpages. Необходимо на каждую страницу добавить новостную ленту. Написал маленькое приложение, какой есть красивый способ "встроить' его вывод в flatpages?
Извините за беспокойство по легким вопросам, недавно перешел на Django



Офлайн

#2 Ноя. 11, 2010 12:01:43

Doberman26rus
От: Ставрополь
Зарегистрирован: 2009-03-16
Сообщения: 128
Репутация: +  1  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Ну flatpages потому так и называются, что они простые=) И там по определению кроме текста и заголовка ничего и быть не должно, но если уж сильно так хочется их использовать, ну я бы сделал наверное тегами, хоть это и не сильно изящьное решение.
Почитай про django-cms.



подпись

Офлайн

#3 Ноя. 11, 2010 16:30:42

Syao
От:
Зарегистрирован: 2009-11-15
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Все элементарно.
1. Разобраться с документацией по flatpages (http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/?from=olddocs#how-it-works).
2. Разобраться с документацией по middleware (http://docs.djangoproject.com/en/dev/topics/http/middleware/).
3. Написать на основе дефолтных middleware (http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/middleware.py#L5) и view (http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/views.py#L20) свои собственные.
4. Использовать самопальный middleware.

P.S. Другой вариант, простой и быстрый, зато менее правильный, познавательный и интересный, это тупо написать view, работающую с django.contrib.flatpages.models.FlatPage в качестве модели, и в самом конце URLconf сопоставить ее регулярке перехватывающей абсолютно все запросы.



Отредактировано (Ноя. 11, 2010 17:16:22)

Офлайн

#4 Ноя. 12, 2010 10:55:46

Doberman26rus
От: Ставрополь
Зарегистрирован: 2009-03-16
Сообщения: 128
Репутация: +  1  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Syao
Все элементарно.
1. Разобраться с документацией по flatpages (http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/?from=olddocs#how-it-works).
2. Разобраться с документацией по middleware (http://docs.djangoproject.com/en/dev/topics/http/middleware/).
3. Написать на основе дефолтных middleware (http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/middleware.py#L5) и view (http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/views.py#L20) свои собственные.
4. Использовать самопальный middleware.
Решение довольно хорошее, только бессмысленное. По мойму проще уже своё решение написать. Не для этого были сделаны flatpages.



подпись

Офлайн

#5 Ноя. 12, 2010 12:47:40

Moroznui
От:
Зарегистрирован: 2010-10-12
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Эх. Мб кому-нибудь пригодиться.
Моделька:

class New(models.Model):
""" Новости """
title=models.CharField(u'Заголовок', max_length=20)
body=models.CharField(u'Текст',max_length=255)
class Staticpage(models.Model):
"""
Статические страницы
"""
url = models.CharField(u'Ссылка', max_length=100, db_index=True)
title = models.CharField(u'Заголовок', max_length=200)
content = models.TextField(u'Контент', blank=True)
def get_absolute_url(self):
return self.url
Вьюха:
data_news=New.objects.get(pk='1') #Злой хак ^^
def staticpage(request, url):
"""
Показывает малоизменяемые странички
Из-за блока новостей пришлось сделать костыль
"""
if not url.endswith('/') and not url=='':
return HttpResponseRedirect("%s/" % request.path)
if not url.startswith('/'):
url = "/" + url
data=Staticpage.objects.get(url=url)
data.title = mark_safe(data.title)
data.content = mark_safe(data.content)
return render_to_response('static.html', {'data':data, 'MEDIA_URL': settings.MEDIA_URL, 'data_news':data_news})
Урлы:
(r'^(?P<url>.*)$', 'fashion.views.staticpage'), #Обязательно в конец
Спасибо всем, элегантного решения не получилось :)



Офлайн

#6 Ноя. 12, 2010 13:34:09

Syao
От:
Зарегистрирован: 2009-11-15
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Doberman26rus
Решение довольно хорошее, только бессмысленное. По мойму проще уже своё решение написать. Не для этого были сделаны flatpages.
Смысл изобретать велосипед, когда можно переписать только небольшую часть уже готового качественного кода? А насчет назначения, Django - это не CMS, поэтому ее элементы можно оборачивать доп. логикой, и это, ИМХО, правильно.



Офлайн

#7 Ноя. 12, 2010 13:41:12

Syao
От:
Зарегистрирован: 2009-11-15
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Moroznui
А зачем Staticpage? Есть django.contrib.flatpages.models.FlatPage.



Отредактировано (Ноя. 12, 2010 13:42:20)

Офлайн

#8 Ноя. 12, 2010 13:44:11

Doberman26rus
От: Ставрополь
Зарегистрирован: 2009-03-16
Сообщения: 128
Репутация: +  1  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Syao
Смысл изобретать велосипед
Я не об этом. Не стоит делать из велосипеда танк. Иначе он выйдет кривым и стрелять будет из выхлопной трубы, а не из дула, как надо=)



подпись

Офлайн

#9 Дек. 8, 2011 07:32:04

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Встроить app в flatpages

Moroznui
Есть сайт, в основном на flatpages. Необходимо на каждую страницу добавить новостную ленту. Написал маленькое приложение, какой есть красивый способ "встроить' его вывод в flatpages?
Извините за беспокойство по легким вопросам, недавно перешел на Django
Пишется свой context-processor и соответствующие теги добавляются в шаблон для статических страниц



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version