Вот и подошел к концу первый этап разработки www.russned.tv – это видеохостинг на django. Из названия ясно, что сайт сделан для наших друзей - Русской недели. При разработке использована куча всяких django-приложений:
- django-cms (с кучищей плагинов)
- django-profile (понадобиться для регистрации и, поздней, для добавления роликов пользователями)
- django-ratings
- django-ajaxcomments
- + набор собственных приложений, которые теперь переносятся из проекта в проект.
У некоторых роликов есть полная avi-версия.
Django-сообществу возможно, будут интересны следующие куски кода этого проекта:
1. Список последних просмотренных роликов
videos = MyVideo.objects.annotate(last=Max('videoview__when')).order_by('-last')[:limit]
Между прочим, универсальный вариант GROUP BY средствами django ORM’а.
2. Ролики отсортированные по соотношению рейтинга к кол-ву голосов:
videos = MyVideo.objects.extra(select={
'a_rating': 'rating_score/rating_votes'
}).order_by('-a_rating')[:limit]
Это специфика использования djangoratings – кто использовал поймет ;)
3. Ролики с сортировкой по кол-ву комментариев (только откомментированные):
videos = MyVideo.objects.annotate(comments_count=Count('comments')).\
exclude(comments_count=0).order_by('-comments_count')[:limit]
В основе файл models:
class MyVideo(models.Model):
...
title = models.CharField(_(u'название'), max_length=250, unique=True)
desc = models.TextField(_(u'описание'), max_length=250, null=True, blank=True)
category = models.ForeignKey(Category, verbose_name=_(u'категория'), blank=True, null=True)
tags = TagAutocompleteField()
rating = RatingField(range=5, weight=1, can_change_vote=True, allow_anonymous=False)
comments = generic.GenericRelation(Comment, content_type_field="content_type", object_id_field="object_pk")
class VideoView(models.Model):
video = models.ForeignKey(MyVideo)
when = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, null=True, blank=True, editable=False)
Смотрите, качайте, советуйте друзьям! www.russned.tv.
15 комментариев:
tags = TagAutocompleteField()
а можно по подробнее про этот филд?
Да. Это от django-приложения http://code.google.com/p/django-tagging-autocomplete/ - чрезвычайно полезная штука. Виджеты автодополнения как для морды, так и для админки. Установка очень простая: http://code.google.com/p/django-tagging-autocomplete/wiki/ReadMe
Кстати, я уже писал о django-tagging-autocomplete: http://markeev.labwr.ru/2010/02/django.html
А что за ПГМнутые товарищи? Какие-то православные фильмы.
Грубовато как-то... Нормальные ребята, делают полезное дело - занимаются духовным воспитанием и просветительской деятельностью. Опять же, никому не навязываются. Почему ПГМнутые?
Не нужно говорить за всех. Уверен, что многие из них только и делают, что навязываются. :)
Да я просто из тех, кто считает религию душевной болезнью.
Из кого это "из них"? Вы лично знакомы с сотрудниками Русской недели? Балбесов везде хватает, но всех под одну гребенку чесать - преступление против здравого смысла.
А сами видеофайлы никак не конвертируете?
Пока нет, но когда добавим загрузку роликов пользователям, придется добавлять конвертирование...
Интересное обсуждение. Вместо разбора технической стороны перешли на ПГМ 8) Классика.
Всем привет!
Петр
Да, не корми тролля.;)
Было бы очень интересно почитать о ваши собственных приложениях, которые переползают у вас из проекта в проект.
Страница логина на сайте уж очень адская :)
1. Заумное слово «Аутентификация».
2. Микроскопическая кнопка «Войти».
3. И почему «Свойства»?
Форма логина из django-profile. Русификацию там адская, но это, опять же, равно мой косяк.
Спасибо за замечания, всё исправлю!
http://www.russned.tv/about/
выдает Page not found (404)
но это фигня по сравнению с тем что продакшн сервер работает в режиме DEBUG = True
Грешен, каюсь. Правил ошибку прям на продакшене и забыл отключить.
Кстати, прошел по ссылке в Ваш блог, выкачал книгу по джанго. Спасибо!
Отправить комментарий