Обновить
16.45

Django *

Фреймворк для веб-приложений на Python

Сначала показывать
Порог рейтинга
Уровень сложности

Приглашаем на Moscow Django Meetup и Moscow.pm 6 ноября

Время на прочтение2 мин
Количество просмотров4.3K


В этот четверг, 6 ноября, в офисе Mail.Ru Group пройдут сразу две встречи разработчиков. Как говорится, в тесноте, да не в обиде.
Читать дальше →

Рецепты Django. Part 1 — AJAX формы

Время на прочтение3 мин
Количество просмотров59K
Здравствуй, хабраюзер!

Возможно, у меня уже начался кризис среднего возраста, но летом я начал работу над крупным Open Source проектом. Впрочем, о нём немного позже, когда за код не будет стыдно. Итак, хочу поделиться рядом сниппетов, которые мне приходилось писать, чтобы соответсовать концепции DRYDon't Repeat Youself. Посему собираюсь написать несколько статей.
Кстати, можете обратить внимание на предыдущую мою статью.

Начну с реализации AJAX.


Сразу хочу оговориться — не так давно я нашёл на сайте джанги пример для реализации ajax формы. Как выяснилось, я сделал практически то же самое, однако я это сделал сам и я доволен=) Ниже я приведу свой пример и разберу его.
image

Прошу под кат.
Отследить полёт мысли

Deploy Django приложений с использованием Ansible для чайников

Время на прочтение8 мин
Количество просмотров22K
Доброго времени суток!

Совсем недавно мой коллега познакомил меня с замечательным инструментом автоматизации ручного труда под названием Ansbile. После чего моментально родилась идея написать что-то своё, что упрощает тот самый ручной труд. Что чаще всего приходится делать руками? Правильно, деплоиться.

В этой статье я расскажу о том, как с использованием ansible раскатать django-проект на чистом удаленном сервере ubuntu 14.04, создав при этом для проекта отдельного пользователя.
Читать дальше →

Эффективный Django. Часть 1

Время на прочтение14 мин
Количество просмотров305K

Представляю вам перевод статей о Django с сайта effectivedjango.com. Наткнулся я на этот сайт во время изучения данного фреймворка. Информация размещенная на этом ресурсе показалась мне полезной, но так как нигде не нашел перевода на русский, решил сделать сие доброе дело сам. Этот цикл статей, как мне думается, будет полезен веб-разработчикам, которые делают только первые шаги в изучении Django.
Приступить к чтению

Мобильная версия для Django-проекта

Время на прочтение8 мин
Количество просмотров26K


С каждым днем пользователи смартфонов занимают все большую долю интернета. По данным LiveInternet доля российских пользователей OS Android уже превысила долю Windows7. В выходные дни пользователи мобильных платформ пользуются интернетом значительно чаще. Та же тенденция наблюдается и в мире. Все это еще раз доказывает необходимость адаптации сайта для смартфонов и планшетов.

О том, как можно адаптировать ваш Django-проект для мобильных устройств, я расскажу в этой статье. Но сначала давайте разберем, какие есть варианты создания мобильной версии сайта.
Читать дальше →

Приглашаем на 23-й Moscow Django Meetup

Время на прочтение2 мин
Количество просмотров5K


Спешим сообщить, что ровно через неделю, 1 октября в офисе Mail.Ru Group состоится очередная встреча Moscow Django Meetup. В этот раз докладчиков будет двое, но выступить обещают за троих, а то и четверых.

Первым поделится с аудиторией своими опытом и знаниями Геннадий Чибисов из Яндекса. Тема доклада: «Работа с файлами с помощью django-proxy-storage». В процессе разработки практически любого веб-приложения перед разработчиками встают задачи обработки, хранения и раздачи статического контента. В Django из коробки доступен кастомизируемый механизм так называемых стораджей. В своем докладе Геннадий расскажет про небольшую библиотечку django-proxy-storage, выкованную в подземельях Яндекса, которая расширяет функционал стораджа. С помощью этой библиотечки можно творить всякие занятные вещи:
  • хранить дополнительную мета-информацию о файлах и на основе этих данных формировать логику выполнения всех CRUD-операций самого стораджа;
  • динамически использовать несколько стораджей. Пример – хранение текстовых файлов на диске, а изображений в S3;
  • выполнять автоматический фолбэк до работающего стораджа на уровне приложения;
  • организовывать авторизацию раздачи файлов на основе расширенной мета-информации.

Геннадий порадует слушателей живыми примерами того, как, прибегнув к минимальному рефакторингу, каждый желающий сможет добавить в свои Django-приложения описанную выше функциональность.
Читать дальше →

Почему я не могу сбросить пароль?

Время на прочтение3 мин
Количество просмотров24K
Такой вопрос пришел сегодня в техподдержку. Пользователь заходит на страницу восстановления пароля, вводит свой email, нажимает кнопку «Восстановить». Система радостно сообщает, что email отправлен. Пользователь заходит в почтовый ящик, пользователь не видит письма, пользователь недоволен.
Делаем пользователя довольным

Django + API Вконтакте: постим записи с вложениями, получение списка групп и записей

Время на прочтение5 мин
Количество просмотров21K
image


Доброго времени суток, Хабр!

Недавно разрабатывала сайт на python/django и нужна была возможность использования API Вконтакте. А именно:

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

Собственно, для администратора управление этим функционалом осуществляется через админку.

Расскажу по шагам реализацию этого функционала.
Читать дальше →

Сервис данных по выборам и кандидатам

Время на прочтение3 мин
Количество просмотров3K
Добрый день, коллеги!

Как многие знают, 14 сентября 2014 года пройдет единый день голосования, во многих регионах России выбирают себе депутатов и иногда мэров.
При этом информационное обеспечение, на мой взгляд, хромает. Главное неудобство заключается в том, что информацию о кандидатах невозможно посмотреть списком, только список без подробностей (к тому же разбитый на страницы по 20 человек) и по одному человеку с подробностями.

Солнечным летним днем пришла мне идея вытащить эту информацию, чтобы можно было её удобно анализировать и выбирать кандидатов наглядно и с умом. К сожалению, ЦИК не предоставляет каких либо экспортных вариантов по всем выборам (я по крайней мере не нашел), поэтому решение — парсинг страничек роботом.
Читать дальше →

Минималистичный issue tracker на Django

Время на прочтение11 мин
Количество просмотров19K
В этой статье рассказывается, как за короткое время решить с помощью фреймворка Django, простую, но интересную задачу: создание системы баг-трекинга (система тикетов) для своего проекта. Наша система будет интегрирована с системой аутентификации пользователей Django и административным интерфейсом. Несмотря на свою примитивность, такое приложение, при некотором усовершенствовании, вполне может быть полезно для разработчика-одиночки или небольшой группы.


Читать дальше →

Django 1.7

Время на прочтение1 мин
Количество просмотров21K
После почти года разработки вышел долгожданный релиз Django 1.7.
image
Ключевые изменения новой версии
  • Прекращена поддержка Python 2.6.
  • Добавлена поддержка миграций непосредственно в сам фреймворк. Здесь можно посмотреть инструкции о переходе с South.
  • Переработан механизм загрузки приложений. Теперь models.py — необязателен.
  • Изменения в Field API, в частности, добавлен обязательный метод deconstruct() для поддержки миграций.
  • Добавлена возможность вызова QuerySet напрямую из менеджера. Также теперь можно указывать необходимый менеджер при использовании связи между моделями.
  • Новая система для проверки проекта и диагностики ошибок, вместо validate добавлена команда check.
Читать дальше →

Приглашаем на Moscow Django MeetUp № 22

Время на прочтение3 мин
Количество просмотров5.4K


Дамы и господа, в четверг в офисе Mail.Ru Group пройдёт 22-я по счёту ежемесячная встреча Moscow Django MeetUp! В этот раз вы сможете услышать мудрые речи трёх докладчиков, которые выступят на сильно разные темы. В первых рядах выступающих окажется не кто иной, как Григорий Петров (Digital October).

Григорий регулярно выступает на конференциях не просто так. Он считает, что это приносит пользу не только сообществу разработчиков, но и ему самому. Специально для данного митапа Григорий подготовил доклад, в рамках которого вы услышите соображения программиста о публичных выступлениях, силе воли, нужности презентации и ключевой роли гипокампа в профессиональном росте айтишника. Доклад разбит на три части:
Читать дальше →

Разработка своей системы биллинга на Django

Время на прочтение4 мин
Количество просмотров36K
При разработке большинства сервисов возникает потребность во внутреннем биллинге для аккаунтов сервиса. Так и в нашем сервисе возникла такая задача. Готовые пакеты для её решения мы так и не смогли найти, в итоге пришлось разрабатывать систему биллинга с нуля.
В статье хочу рассказать о нашем опыте и подводных камнях, с которыми пришлось столкнуться во время разработки.

Задачи

Задачи, которые нам предстояло решить были типичны для любой системы денежного учета: прием платежей, лог транзакций, оплата и повторяющиеся платежи (подписка).
Читать дальше →

Ближайшие события

Проверяем валидность внутриигровых покупок через Google API

Время на прочтение3 мин
Количество просмотров24K

Проблема и решение


Я думаю многие знают что такое Freedom. Для тех кто не знает — это приложение под Android, позволяющее делать внутриигровые покупки в других приложениях без траты денег.

Описание:
Вам надоели предложения в играх и программах что-то купить(расширения, монетки и т.п.)? Покупайте их бесплатно с помощью Freedom!
Пользоваться очень просто: устанавливаете, запускаете (первый запуск может занять какое-то время — до нескольких минут), тапаете по приложению — оно запускается. После этого оно возможно пройдёт проверку лицензии, а при покупке из приложения Вы сможете расплачиваться фэйковой карточкой.

Ссылка на статью автора: habrahabr.ru/post/163547

Я до определенной поры игнорировал этот прискорбный факт, тем более что я в какой-то степени согласен с автором, что те кто пользуются этим софтом и так врядли бы купили что-то у меня в игре. Но новый проект над которым мы работаем должен стать мультиплеерным. А это значит, что читеры получат реальное преимущество перед обычными игроками, что меня не особо радует.
Покурив вечером мануалы по Google API я решил соорудить собственную проверку валидности покупок. Т.к. мы используем Unity3D + Prime31 IAP, пришлось их немного обработать напильником, чтобы они начали выдавать purchase token.
Читать дальше →

Django-orm в поисках LEFT JOIN

Время на прочтение6 мин
Количество просмотров34K
Давно уже перестало быть секретом, что Django-ORM в целом глупое как палка и не способно решать более менее серьезные задачи, и особо глупа в тех случаях, когда необходимо влиять извне на формирование разумных SQL запросов. Об одном из таких случаев и как я пытался с этим бороться — поведаю под катом.
Читать дальше →

Эффективная многопоточность в Python

Время на прочтение7 мин
Количество просмотров78K
Хочу поделиться простым рецептом, как можно эффективно выполнять большое число http-запросов и других задач ввода-вывода из обычного Питона. Самое правильное, что можно было бы сделать — использовать асинхронные фреймворки вроде Торнадо или gevent. Но иногда этот вариант не подходит, потому что встроить event loop в уже существующий проект проблематично.

В моем случае уже существовало Django-приложение, из которого примерно раз в месяц нужно было выгрузить немного очень мелких файлов на AWS s3. Шло время, количество файлов стало приближаться к 50 тысячам, и выгружать их по очереди стало утомительным. Как известно, s3 не поддерживает множественное обновление за один PUT-запрос, а установленная опытным путем максимальная скорость запросов с сервера ec2 в том же датацентре не превышает 17 в секунду (что очень не мало, кстати). Таким образом, время обновления для 50 тысяч файлов стало приближаться к одному часу.

Питонисты с детства знают, что от использования потоков (тредов операционной системы) нет никакого толка из-за глобального лока интерпретатора. Но немногие догадываются, что как и любой лок, этот время от времени освобождается. В частности, это происходит при операциях ввода-вывода, в том числе и сетевых. А значит, потоки можно использовать для распараллеливания http-запросов — пока один поток ожидает ответа, другой спокойно обрабатывает результат предыдущего или готовит следующий.

Получается, всего-то нужен пул потоков, который будет выполнять запросы. К счастью, такой пул уже написан. Начиная с версии 3.2 для унификации всей асинхронной работы в Питоне появилась библиотека concurrent.futures. Для второй версии Питона есть бекпорт под именем futures. Код до безобразия прост:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(concurrency) as executor:
    for _ in executor.map(upload, queryset):
        pass

Здесь concurrency — число рабочих потоков, upload — функция, выполняющую саму задачу, queryset — итератор объектов, которые по одному будут передаваться в задачу. Уже этот код при concurrency в 150 смог пропихнуть на сервера Амазона ≈450 запросов в секунду.
Читать дальше →

Django widgets и еще пара трюков

Время на прочтение7 мин
Количество просмотров26K


Все знают что Django это замечательный фреймворк для разработки, с кучей мощных батареек. Лично для меня, при первом знакомстве с django все казалось крайней удобным — все для удобства разработчика, думалось мне. Но те кто с ним вынужден работать в течении долгого времени, знают, что не все так сказочно, как кажется новичку. Шло время проекты становились больше, сложнее, писать вьюшки стало неудобным, а разбираться во взаимоотношении моделей становилось сложнее и сложнее. Но работа есть работа, проект был большой и сложный, и, ко всему прочему необходимо было иметь систему управления страниц как в cms, и, вроде бы, есть замечательный django cms, к которому всего и надо что написать плагинов. Но оказалось, что можно сделать весь процесс несколько более удобным, добавив пару фич и немного кода.
Читать дальше →

PyCon Russia 2014 — два дня python-счастья

Время на прочтение5 мин
Количество просмотров16K
2-3 июня в Екатеринбурге прошла вторая международная конференция python-разработчиков PyCon Russia 2014. Участники съехались из 23 городов России и мира.

IMG_0636.jpg
Участники PyConRu 2014

Читать дальше →

Django на production. uWSGI + nginx. Подробное руководство

Время на прочтение7 мин
Количество просмотров225K
Перед вами руководство по настройке production окружения для Django. Здесь будут описаны необходимые шаги по настройке Django, uWSGI и nginx. Руководство охватывает все три компонента — полный стек серверного ПО для веб-приложений.

Подразумевается, что вы используете Unix-подобную операционную систему и менеджер пакетов, эквивалентный aptitude. Найти эквивалент aptitude почти для любой операционной системы, в том числе и для Mac OS X, для вас не составит никакого труда.

Руководство написно для версий Django 1.4 или выше. Если вы используете более раннюю версию, то вам придется самостоятельно найти wsgi модуль для нее. Также вы заметите, что файловая структура проекта будет немного отличаться от представленной здесь.

Общая идея


Веб-сервер может по запросу отдавать пользователям файлы из своей файловой системы, однако он не может напрямую работать с Djangо приложениями. Веб-серверу нужен интерфейс, который будет запускать Django приложение, передавать ему запрос от пользователя и возвращать ответ.

Для выполнения этих задач был разработан Web Server Gateway Interface — WSGI — стандарт взаимодействия Python программ и веб-сервра.

uWSGI — одна из реализаций WSGI. В этом руководстве мы установим и настроим uWSGI для создания Unix сокета и взаимодействия с веб-сервером по протоколу WSGI.
Читать дальше →

Настройка удаленного интерпретатора на Pycharm для Django

Время на прочтение3 мин
Количество просмотров47K

В этой статье хочу рассказать, а также показать настройку полезного инструмента для удаленной разработки от компании JetBrains встроенное в IDE Pycharm. Такой инструмент есть уже давно, но многие разработчики относятся к этому не серьезно, и для внесения изменений в проект предпочитают разворачивать его локально. Когда намного легче на том-же сервере, сделать копию части проекта и изменять или тестировать на другом порту с помощью встроенных средств удаленного интерпретатора Pycharm. Конечно не во всех ситуациях это хороший вариант, но для правки, и доработки небольших проектов очень даже подходит. А если проект с нуля, то создавая его на удаленном сервере, исчезает потребность в переносе и адаптации его под сервер(хостинг), которые неизбежно ведут к появлению множества багов и несовместимостей.

К тому же такой подход нас избавляет от таких проблем:

• на разных серверах свой Unix и свои приколы, разворачивать локально и подгонять среду под особенности того или иного сервера может занять приличное количество времени;
• разные версии python;
• И если в файле req.txt для Django не указаны все зависимости;
и т.д.
Читать дальше →

Вклад авторов