• 28 Янв
  • 2016
Приведем простой пример, который будет загружать изображение при сохранении инстанса модели и использовать Primary Key в качестве имени файла. class Image(models.Model): path = models.ImageField(upload_to='temp', null=True, blank=True) caption = models.CharField(max_length=256, blank=True) created = models.DateTimeField(auto_now_add=True) def __unicode__(self): return str(self.pk) def save(self, *args, **kwargs): super(Image, self).save(*args, **...
  • 11 Янв
  • 2016
Шаблоны запросов Curl GET: with JSON: curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource with XML: curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource POST: For posting data: curl --data "param1=value1param2=value2" http://hostname/resource For file upload: curl --form "fileupload=@filename.txt" http://hostname/resource RESTful HTTP Post: curl -X POST -d @filename http://ho...
  • 31 Июл
  • 2015
Столкнулся с проблемой, когда в интерфейсе приходится очень часто отправлять данные на сервер и каждый раз ожидать перезагрузку страницы становится невыносимо. Было принято решение отправлять форму аяксом, а чтобы эта отправка была безопасной (то есть проверялся csrf_token), использовал следующий код: from django.http import JsonResponse from django.views.generic.edit import CreateView class AjaxableResponseMixin(object): def form_invalid(self, form): print form r...
  • 25 Июл
  • 2015
Установка sudo apt-get install postgresql-contrib CREATE EXTENSION hstore; pip install django-hstore Если база данных уже существует, то при работе с проектом, скорее всего, вы получите ошибку: hstore type not found in the database. please install it from your 'contrib/hstore.sql' file Для ее решения делаем следующее: psql template1 -c 'create extension hstore;' psql application_db -c 'create extension hstore;' Справку по django-hstore можно почитать здесь на великом и могучем языке...
  • 23 Июл
  • 2015
Иногда случается ситуация, когда нужно отредиректить человека на другой URL, при определенных условиях, например, если ListView не получил из базы ни одного элемента. Решение достаточно простое и реализуется методом dispatch. Клас вьюхи принимает такой вид: from django.shortcuts import redirect class CategoriesList(ListView): model = Category context_object_name = 'categories' template_name = 'categories.html' paginate_by = 50 def get_queryset(self): ...
  • 23 Июл
  • 2015
Наверное в большинстве проектов приходится иметь дело с категориями чего-либо. Самый распространенный пример - это категории товаров или категории статей. Простой способ - сделать модель с категориями и ForeignKey из модели тавара на модель категорий. Но есть одно весьма печальное ограничение - так не получится сделать многоуровневые категории. Однако, если вы используете PostgreSQL, тогда у вас есть замечательная возможность обойти эту проблему. Для этого устанавливаем django-mptt. (О данной во...
  • 23 Июн
  • 2015
Возможности manage.py и его команд достаточно широки. И наверняка все замечали, что сторонние (не Джанго) приложения, например South, умеют добавлять свой функционал к файлу управления проектом фреймворка Django. Давайте разберемся, как создать подобное "волшебство" в своем приложении. Структура файлов Прежде всего нам нужно создать несколько директорий и файлов. Пускай наше приложение называется main, именно в его директории мы будем создавать следующую структуру: main/ __init__.p...
  • 22 Июн
  • 2015
Давно собирался сделать Vim одним из своих основных инструментов, но всегда было лень изучить его функционал. Поэтому использование мной этого великолепного редактора сводилось до банального редактирования конфигов на сервере. Чтобы в полной мере ощутить всю прелесть Vim, нужно запомнить команды редактора. Вот некая шпаргалка. Она была найдена на просторах Интернета, честно скопирована и доработана. Может кому-то пригодится. Конфиг редактора находится в файле: ~/.vimrc Навигация и работа с ...
  • 22 Июн
  • 2015
При настройке PostgreSQL может потребоваться редактирование файла pg_hba.conf, например для предоставления удаленного доступа к БД. Для этого необходимо прописать хост, в котором указывается диапазон IP-адресов, а также длина маски. Задается этот адрес в виде обычной десятичной нотации, после которой через слеш указывается длина маски. Длина маски определяет сколько бит IP адреса должны совпадать с заданными тут. Биты справа от маски в указанном IP адресе должны быть равны нулю. Не должно быть ...
  • 28 Май
  • 2015
Начинаем установку: sudo apt-get update sudo apt-get install build-essential chrpath libssl-dev libxft-dev Устанавливаем пакеты, необходимые PhantomJS для корректной работы: sudo apt-get install libfreetype6 libfreetype6-dev sudo apt-get install libfontconfig1 libfontconfig1-dev Теперь скачаем Фонтом: cd ~ export PHANTOM_JS="phantomjs-1.9.8-linux-x86_64" wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 sudo tar xvjf $PHANTOM_JS.tar.bz2 Перемещаем директор...