Python

Установка PIL если sorl.thumbnail не работает в virtualenv

Если sorl.thumbnail не работает, то возможно это из-за того что плохо установлен PIL.

В Debian. Установка PIL бывает неверной когда вы используете  virtualenv, но это можно поправить..., для этого ставим нужные пакеты для компиляции. 

apt-get -y install build-essential python-dev python-virtualenv libbz2-dev zlib1g-dev \
  libfreetype6-dev libjpeg8-dev build-dep python-imaging libfreetype6-dev libxml2-dev libxslt1-dev zlib1g-dev

Далее в зависимости от того какая у вас система 32-bit или 64-bit  нужно поправить ссылки на модули

для "i386-linux-gnu":

sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu ...

Читать далее

Django-celery. Идем по граблям своей дорогой.

Давненько что-то я не писал ничего.

Вот понадобилось поднять django-celery. В google информации рускоязычной не особо много, да и то что было немного уже устарело как показалось мне. Вот я и опишу с чем сталкивался в ходе разворачивания этого приложения.

На момент установки была последняя версия 3.0.11. Ее я и взял.
Celery поддерживает несколько бекендов, включая RabbitMQ, Redis, базу данных и другие.
Я ранее особо с этим не работал, поэтому особо не заморачивался с выбором и по рекомендации разработчиков выбрал RabbitMQ. У меня проект не высоко-нагружен был, так что особых претензий не должно быть, в общем решил поработать ...

Читать далее

Получение случайных объектов из queryset в Django

Получение случайных объектов из queryset в Django

Часто в проектах Django необходимо сделать выборку случайных записей из базы.

О
бычно для получения случайного набора элементов (среза элементов) в Django "обычным" способом делают так:

Book.objects.all (). Order_by ('?')[: 10]

Приведенный выше код, сортирует все книги в произвольном порядке, а затем выбирает первые 10 объектов.
Этот подход не является
, правда, эффективным в MySQL. С использованием "ORDER BY ?" действительно это дорого для запроса.

Поэтому,
хорошо искать другие способы получить случайные элементы (случайный срез).

Например можно случайный срез записей делать так
:

import random
count = Book.objects.all().count()
slice = random.random() * (count - 10)
Book.objects.all()[slice: slice+10]


Приведенный выше ...

Читать далее

South migrate: как поле ForeignKey сделать ManyToMany без потери данных

South migrate: как поле ForeignKey сделать ManyToMany без потери данных

В одном из проектов мне необходимо было ForeignKey превратить в ManyToMany без потери данных. Русского мануала я не нашел для этого. Но нашел статейку на английском и, исправив ошибки в ней, решил сделать русский вариант.

Итак, задача - нужно превратить поля таблицы базы данных с отношенияем FK в M2M отношения при помощи South и при этом не потерять существующие заполненные данные.

1. Вот исходная модель (образец), приложение  назовем appz, допустим.

class TestData(models.Model):
    field1 = models.CharField(max_length=200)
    field2 = models.CharField(max_length=200)

class Knight(models.Model):
    name = models.CharField(max_length=100)
    additional_field_new_name = models.CharField(max_length=155, default='')
    data ...

Читать далее

Django аутентификация. Email-адрес вместо имени пользователей

Часто в приложениях, которые мы разрабатываем, необходимо использовать адреса электронной почты для авторизации, а не имя пользователя. Посетителям намного легче помнить свой адрес электронной почты, чем постоянно растущий список имен пользователей на сайтах, так как часто они оказываются заняты.

Чтобы написать простую аутентификацию по email на стороне
сервера в джанго, поступим  следующим образом:

1. В settings.py добавим следующие строки (замените youproject именем вашего приложения):

AUTHENTICATION_BACKENDS = (
    'youproject.backends.EmailAuthBackEnd',
    'django.contrib.auth.backends.ModelBackend',
)

2. Создайте файл с именем backends.py с таким соержанием и поместите его в корневой папке (т.е. той же папке, settings.py)

from ...

Читать далее

Zinnia и его альтернативы

Zinnia и его альтернативы

На Django (джанго) при желании можно самому сесть и написать простенький блог буквально за час c довольно немалыми возможностями. Да! И это будет ваш код и Вы будете знать что делается у вас на сайте и как :).

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

Читать далее

Рекомендации и удобства по работе с python и django

Для проверки настройки параметров базы в django (которые указываются в settings.py) зайдите в django shell (manage.py shell) и выполните такие команды:

from django.db import connection
cursor = connection.cursor()

Если не было сообщений о ошибке, значит все ОК, иначе – что-то не правильно указали.Для просмотра подключенных модулей для текущего python: в обычной консоле набирите:

python -c "help('modules')"


или в интерактивном интерпретаторе python’a:

help('modules')

Для просмотра PYTHONPATH в консоле python наберите:

import sys
sys.path

В django существует два простых способа просмотра значений переменных при отладке:
* при помощи обычного print
* вставка оператора assert False, variable_name , где ...

Читать далее

Пример Python-Django-PyFacebook.

Пример Python-Django-PyFacebook.

Работаю щас над одним проектом, где моя задача написать Facebook приложение. А точнее его серверную часть. Так как я это делаю впервые, то хочу собрать все полезности в одном месте. В этой статье буду публиковать все найденное инересное для выполнения этого задания. Статья будет изменяться и исправляться по мере надобности. Ну что ж, начнем :).

Как работают Facebook приложения?

  1. Пользователь делает запрос к  apps.facebook.com/yourapp/page1/
  2. Сервера Facebook перенаправляют( делают свой отдельный) этот запрос yourserver.com/page1/
  3. Вы получая эти запросы можете обращаться к Facebook API, и использовать FQL для запросов к таблицам Facebook.
  4. Вы отправляете обратно страницы, в ...

Читать далее

Регистрация на сайте c django-registration

Итак, как и обещал буду опсисывать немного то что я сделал на сайте.

Сегодня вот добавил на сайт регистрацию при помощи приложения django-registration

Скачать его, полной документацией на английском, можно отсюда https://bitbucket.org/ubernostrum/django-registration/downloads . Я выбрал django-registration-0.8-alpha-1.tar.gz - его работа меня вполне устраивает.

Установить довольно просто:

  1. скопировать папку registration в корень проекта или в папку приложений если таковая имеется
  2. в файле settings.py добавить:
  • ACCOUNT_ACTIVATION_DAYS = 10 # количество дней активации аккаунта
  •     INSTALLED_APPS = (
            'django.contrib.auth',
            'django.contrib.sites',
            'registration',
            # ...другие приложения...
        )

после этого выполнить

manage.py syncdb

и настраиваем конфигурацию ссылок в urls.py

 (r'^accounts ...

Читать далее

Fabric - автоматизация административных задач на python

Fabric - это инструмент, позволяющий автоматизировать выполнение различных операций на удалённом сервере. Например, заливка и развёртывание проекта на удалённом сервере.

Fabric представляет собой обычное python-приложение. Для соединения с удалённым сервером применяется SSH (используется питоновский модуль Paramiko).
Для установки Fabric вам понадобится pip - средство для установки python-приложений. Так что необходимая последовательность команд (для Debian-based систем) будет примерно такой:

Код:
aptitude install pip
pip install fabric
Естественно, перед этим нужно скачать исходники Fabric с офсайта.Далее нужно составить список инструкций, который хранится в файле fabfile.py. Например, вот так:
Код: 
from fabric.api import *
env.hosts = ['usr1@host1:22', 'usr2@host2:22']
def ...

Читать далее