Анатолий Ларин

Блог о разработке и разработчике

Django & WYSIWYG

Интро

Я по прежнему продолжаю изучать Django + Python. Пока этот тандем не перестает меня радовать. И все больше усилий мне приходится делать над собой, чтобы разрабатывать на работе на PHP с использованием самописного фреймворка.

И вот, на одном из сайтов понадобился WYSIWYG-редактор.
Read the rest of this entry »

Django & Cron

Интро

В предыдущей статье я описывал как выкладывать Django-проект на сервер и можно сказать попутно выкладывал. =) Но на этом мои “мучения” не закончились – оказалось, что я не знаю как прикрутить вызовы частей приложения по Cron.

Погуглив и почитав, решение нашлось… и оно оказалось намного приятнее решения на php ;)

Решение

В корневой директории проекта, в моем случае publishing, создаем фалик run.py:

# -*- coding: utf-8 -*-
import sys
import settings
from django.core.management import setup_environ
setup_environ(settings)
module_name = sys.argv[1]
exec('import %s' % module_name)
exec('%s.%s' % (module_name, ' '.join(sys.argv[2:])))

Update: Спасибо Александру Кошелеву за ценный комментарий.

И теперь при помощи этого скрипта мы можем вызывать функции наших “вьюшек” из командной строки и из cron:

# python /path/to/project/run.py report.views "send_emails()"

Таким образом у нас выполниться report.views.send_emails()
Все, остается вызвать crontab -e и добавть выше описанную команду.

Как всегда, все просто. =)

UPD (15 марта 2011):

Все больше переходов на данную статью из поисковиков. Коллеги, прошло уже 2 года с момента написания статьи, многое изменилось.
Данную задачу теперь можно решать стандартным способом: Custom management commands

Django + Nginx + FastCGI

Интро

Уже пару месяцев я разбираюсь с Python & Django. И вот настало время выкладывать свои художества в сеть ) Правда, мой первый сайт на Django посвящен ведению отчетов по работе. Он довольно прост и хвалиться нечем. Вместо этого я расскажу как просто развертывается проект на Django + Nginx + FastCGI.
Read the rest of this entry »

Материализованные дебаты

Интро

Что главное в интернете? Полезная информация и общение. И все в сети строиться вокруг этих 2-х понятий.

Сегодня мы займемся общением =) Точнее инструментом для общения – написанием древовидных комментариев на Django. Созданием универсальных древовидных комментариев с добавлением при помощи Ajax.
Read the rest of this entry »

Sphinx и Django – замечательное рядом

Интро

Давненько я ничего не писал. Очень много работы. Вот выдалась свободная минуточка и хочется сказать еще пару слов за Django.

Пара слов

Я уже писал поисковом движке Sphinx:Sphinx – настоящее быстрого поиска и использовании его в php-проектах.

А вот как происходит работа с замечательным “поисковиком” в Django:
описываем модель, и добавляем пару строчек для менеджера поиска


from djangosphinx import SphinxSearch
class City(models.Model):
    name            = models.CharField(max_length=32)
    slug            = models.SlugField(blank=True)
    country         = models.ForeignKey(Country)
    state           = models.ForeignKey(State, blank=True, null=True)

    class Meta:
        unique_together = (('country', 'state', 'slug'), ('country', 'state', 'name'))
        db_table = 'cities'

    search = SphinxSearch(
        index='cities', # defaults to cities either way
        weights={ # individual field weighting, this is optional
            'name': 100,
            'aliases': 90,
        }
    )

И все!

Но на этом вкусности не заканчиваются. Нам даже конфиг для Сфинкса писать не нужно – мы его сгенерируем автоматом:


# ./manage.py generate_sphinx_config cities >> sphinx.conf

Собственно поиск будет выглядеть, так:


results = City.search.query('new york')

Более подробно можно почитать в блоге David Cramer’s: Setting up Django and Sphinx Full-text Search (django-sphinx).