
16.45
Общий рейтинг
Django *
Фреймворк для веб-приложений на Python
Сначала показывать
Порог рейтинга
Уровень сложности
Рецепты Django. Part 1 — AJAX формы
3 мин
59KЗдравствуй, хабраюзер!
Возможно, у меня уже начался кризис среднего возраста, но летом я начал работу над крупным Open Source проектом. Впрочем, о нём немного позже, когда за код не будет стыдно. Итак, хочу поделиться рядом сниппетов, которые мне приходилось писать, чтобы соответсовать концепции DRYDon't Repeat Youself. Посему собираюсь написать несколько статей.
Кстати, можете обратить внимание на предыдущую мою статью.
Сразу хочу оговориться — не так давно я нашёл на сайте джанги пример для реализации ajax формы. Как выяснилось, я сделал практически то же самое, однако я это сделал сам и я доволен=) Ниже я приведу свой пример и разберу его.

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

Прошу под кат.
+8
Deploy Django приложений с использованием Ansible для чайников
8 мин
22KДоброго времени суток!
Совсем недавно мой коллега познакомил меня с замечательным инструментом автоматизации ручного труда под названием Ansbile. После чего моментально родилась идея написать что-то своё, что упрощает тот самый ручной труд. Что чаще всего приходится делать руками? Правильно, деплоиться.
В этой статье я расскажу о том, как с использованием ansible раскатать django-проект на чистом удаленном сервере ubuntu 14.04, создав при этом для проекта отдельного пользователя.
Совсем недавно мой коллега познакомил меня с замечательным инструментом автоматизации ручного труда под названием Ansbile. После чего моментально родилась идея написать что-то своё, что упрощает тот самый ручной труд. Что чаще всего приходится делать руками? Правильно, деплоиться.
В этой статье я расскажу о том, как с использованием ansible раскатать django-проект на чистом удаленном сервере ubuntu 14.04, создав при этом для проекта отдельного пользователя.
+16
Эффективный Django. Часть 1
14 мин
305KТуториал

Представляю вам перевод статей о Django с сайта effectivedjango.com. Наткнулся я на этот сайт во время изучения данного фреймворка. Информация размещенная на этом ресурсе показалась мне полезной, но так как нигде не нашел перевода на русский, решил сделать сие доброе дело сам. Этот цикл статей, как мне думается, будет полезен веб-разработчикам, которые делают только первые шаги в изучении Django.
+34
Мобильная версия для Django-проекта
8 мин
26K
С каждым днем пользователи смартфонов занимают все большую долю интернета. По данным LiveInternet доля российских пользователей OS Android уже превысила долю Windows7. В выходные дни пользователи мобильных платформ пользуются интернетом значительно чаще. Та же тенденция наблюдается и в мире. Все это еще раз доказывает необходимость адаптации сайта для смартфонов и планшетов.
О том, как можно адаптировать ваш Django-проект для мобильных устройств, я расскажу в этой статье. Но сначала давайте разберем, какие есть варианты создания мобильной версии сайта.
+39
Приглашаем на 23-й Moscow Django Meetup
2 мин
5K
Спешим сообщить, что ровно через неделю, 1 октября в офисе Mail.Ru Group состоится очередная встреча Moscow Django Meetup. В этот раз докладчиков будет двое, но выступить обещают за троих, а то и четверых.
Первым поделится с аудиторией своими опытом и знаниями Геннадий Чибисов из Яндекса. Тема доклада: «Работа с файлами с помощью django-proxy-storage». В процессе разработки практически любого веб-приложения перед разработчиками встают задачи обработки, хранения и раздачи статического контента. В Django из коробки доступен кастомизируемый механизм так называемых стораджей. В своем докладе Геннадий расскажет про небольшую библиотечку django-proxy-storage, выкованную в подземельях Яндекса, которая расширяет функционал стораджа. С помощью этой библиотечки можно творить всякие занятные вещи:- хранить дополнительную мета-информацию о файлах и на основе этих данных формировать логику выполнения всех CRUD-операций самого стораджа;
- динамически использовать несколько стораджей. Пример – хранение текстовых файлов на диске, а изображений в S3;
- выполнять автоматический фолбэк до работающего стораджа на уровне приложения;
- организовывать авторизацию раздачи файлов на основе расширенной мета-информации.
Геннадий порадует слушателей живыми примерами того, как, прибегнув к минимальному рефакторингу, каждый желающий сможет добавить в свои Django-приложения описанную выше функциональность.
+33
Почему я не могу сбросить пароль?
3 мин
24KТакой вопрос пришел сегодня в техподдержку. Пользователь заходит на страницу восстановления пароля, вводит свой email, нажимает кнопку «Восстановить». Система радостно сообщает, что email отправлен. Пользователь заходит в почтовый ящик, пользователь не видит письма, пользователь недоволен.
+15
Django + API Вконтакте: постим записи с вложениями, получение списка групп и записей
5 мин
21K
Доброго времени суток, Хабр!
Недавно разрабатывала сайт на python/django и нужна была возможность использования API Вконтакте. А именно:
• Постинг статей с сайта на страницу во Вконтакте, а также в выбранные группы (в которых состоял администратор);
• Возможность прикрепления документов и картинок к записям;
• Получение списка групп и записей с помощью обновляющегося скрипта и загрузка всего этого в админку django.
Собственно, для администратора управление этим функционалом осуществляется через админку.
Расскажу по шагам реализацию этого функционала.
-1
Сервис данных по выборам и кандидатам
3 мин
3KДобрый день, коллеги!
Как многие знают, 14 сентября 2014 года пройдет единый день голосования, во многих регионах России выбирают себе депутатов и иногда мэров.
При этом информационное обеспечение, на мой взгляд, хромает. Главное неудобство заключается в том, что информацию о кандидатах невозможно посмотреть списком, только список без подробностей (к тому же разбитый на страницы по 20 человек) и по одному человеку с подробностями.
Солнечным летним днем пришла мне идея вытащить эту информацию, чтобы можно было её удобно анализировать и выбирать кандидатов наглядно и с умом. К сожалению, ЦИК не предоставляет каких либо экспортных вариантов по всем выборам (я по крайней мере не нашел), поэтому решение — парсинг страничек роботом.
Как многие знают, 14 сентября 2014 года пройдет единый день голосования, во многих регионах России выбирают себе депутатов и иногда мэров.
При этом информационное обеспечение, на мой взгляд, хромает. Главное неудобство заключается в том, что информацию о кандидатах невозможно посмотреть списком, только список без подробностей (к тому же разбитый на страницы по 20 человек) и по одному человеку с подробностями.
Солнечным летним днем пришла мне идея вытащить эту информацию, чтобы можно было её удобно анализировать и выбирать кандидатов наглядно и с умом. К сожалению, ЦИК не предоставляет каких либо экспортных вариантов по всем выборам (я по крайней мере не нашел), поэтому решение — парсинг страничек роботом.
+9
Минималистичный issue tracker на Django
11 мин
19KТуториал
В этой статье рассказывается, как за короткое время решить с помощью фреймворка Django, простую, но интересную задачу: создание системы баг-трекинга (система тикетов) для своего проекта. Наша система будет интегрирована с системой аутентификации пользователей Django и административным интерфейсом. Несмотря на свою примитивность, такое приложение, при некотором усовершенствовании, вполне может быть полезно для разработчика-одиночки или небольшой группы.


+14
Django 1.7
1 мин
21KПосле почти года разработки вышел долгожданный релиз Django 1.7.

Ключевые изменения новой версии

Ключевые изменения новой версии
- Прекращена поддержка Python 2.6.
- Добавлена поддержка миграций непосредственно в сам фреймворк. Здесь можно посмотреть инструкции о переходе с South.
- Переработан механизм загрузки приложений. Теперь models.py — необязателен.
- Изменения в Field API, в частности, добавлен обязательный метод deconstruct() для поддержки миграций.
- Добавлена возможность вызова QuerySet напрямую из менеджера. Также теперь можно указывать необходимый менеджер при использовании связи между моделями.
- Новая система для проверки проекта и диагностики ошибок, вместо validate добавлена команда check.
+46
Приглашаем на Moscow Django MeetUp № 22
3 мин
5.4K
Дамы и господа, в четверг в офисе Mail.Ru Group пройдёт 22-я по счёту ежемесячная встреча Moscow Django MeetUp! В этот раз вы сможете услышать мудрые речи трёх докладчиков, которые выступят на сильно разные темы. В первых рядах выступающих окажется не кто иной, как Григорий Петров (Digital October).
Григорий регулярно выступает на конференциях не просто так. Он считает, что это приносит пользу не только сообществу разработчиков, но и ему самому. Специально для данного митапа Григорий подготовил доклад, в рамках которого вы услышите соображения программиста о публичных выступлениях, силе воли, нужности презентации и ключевой роли гипокампа в профессиональном росте айтишника. Доклад разбит на три части:+33
Разработка своей системы биллинга на Django
4 мин
36KТуториал
При разработке большинства сервисов возникает потребность во внутреннем биллинге для аккаунтов сервиса. Так и в нашем сервисе возникла такая задача. Готовые пакеты для её решения мы так и не смогли найти, в итоге пришлось разрабатывать систему биллинга с нуля.
В статье хочу рассказать о нашем опыте и подводных камнях, с которыми пришлось столкнуться во время разработки.
В статье хочу рассказать о нашем опыте и подводных камнях, с которыми пришлось столкнуться во время разработки.
Задачи
Задачи, которые нам предстояло решить были типичны для любой системы денежного учета: прием платежей, лог транзакций, оплата и повторяющиеся платежи (подписка).+18
Ближайшие события
Проверяем валидность внутриигровых покупок через Google API
3 мин
24KПроблема и решение
Я думаю многие знают что такое Freedom. Для тех кто не знает — это приложение под Android, позволяющее делать внутриигровые покупки в других приложениях без траты денег.
Описание:
Вам надоели предложения в играх и программах что-то купить(расширения, монетки и т.п.)? Покупайте их бесплатно с помощью Freedom!
Пользоваться очень просто: устанавливаете, запускаете (первый запуск может занять какое-то время — до нескольких минут), тапаете по приложению — оно запускается. После этого оно возможно пройдёт проверку лицензии, а при покупке из приложения Вы сможете расплачиваться фэйковой карточкой.
Ссылка на статью автора: habrahabr.ru/post/163547
Я до определенной поры игнорировал этот прискорбный факт, тем более что я в какой-то степени согласен с автором, что те кто пользуются этим софтом и так врядли бы купили что-то у меня в игре. Но новый проект над которым мы работаем должен стать мультиплеерным. А это значит, что читеры получат реальное преимущество перед обычными игроками, что меня не особо радует.
Покурив вечером мануалы по Google API я решил соорудить собственную проверку валидности покупок. Т.к. мы используем Unity3D + Prime31 IAP, пришлось их немного обработать напильником, чтобы они начали выдавать purchase token.
+17
Django-orm в поисках LEFT JOIN
6 мин
34KДавно уже перестало быть секретом, что Django-ORM в целом глупое как палка и не способно решать более менее серьезные задачи, и особо глупа в тех случаях, когда необходимо влиять извне на формирование разумных SQL запросов. Об одном из таких случаев и как я пытался с этим бороться — поведаю под катом.
+6
Эффективная многопоточность в Python
7 мин
78KХочу поделиться простым рецептом, как можно эффективно выполнять большое число http-запросов и других задач ввода-вывода из обычного Питона. Самое правильное, что можно было бы сделать — использовать асинхронные фреймворки вроде Торнадо или gevent. Но иногда этот вариант не подходит, потому что встроить event loop в уже существующий проект проблематично.
В моем случае уже существовало Django-приложение, из которого примерно раз в месяц нужно было выгрузить немного очень мелких файлов на AWS s3. Шло время, количество файлов стало приближаться к 50 тысячам, и выгружать их по очереди стало утомительным. Как известно, s3 не поддерживает множественное обновление за один PUT-запрос, а установленная опытным путем максимальная скорость запросов с сервера ec2 в том же датацентре не превышает 17 в секунду (что очень не мало, кстати). Таким образом, время обновления для 50 тысяч файлов стало приближаться к одному часу.
Питонисты с детства знают, что от использования потоков (тредов операционной системы) нет никакого толка из-за глобального лока интерпретатора. Но немногие догадываются, что как и любой лок, этот время от времени освобождается. В частности, это происходит при операциях ввода-вывода, в том числе и сетевых. А значит, потоки можно использовать для распараллеливания http-запросов — пока один поток ожидает ответа, другой спокойно обрабатывает результат предыдущего или готовит следующий.
Получается, всего-то нужен пул потоков, который будет выполнять запросы. К счастью, такой пул уже написан. Начиная с версии 3.2 для унификации всей асинхронной работы в Питоне появилась библиотека
Здесь
В моем случае уже существовало 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 запросов в секунду.+22
Django widgets и еще пара трюков
7 мин
26K
Все знают что Django это замечательный фреймворк для разработки, с кучей мощных батареек. Лично для меня, при первом знакомстве с django все казалось крайней удобным — все для удобства разработчика, думалось мне. Но те кто с ним вынужден работать в течении долгого времени, знают, что не все так сказочно, как кажется новичку. Шло время проекты становились больше, сложнее, писать вьюшки стало неудобным, а разбираться во взаимоотношении моделей становилось сложнее и сложнее. Но работа есть работа, проект был большой и сложный, и, ко всему прочему необходимо было иметь систему управления страниц как в cms, и, вроде бы, есть замечательный django cms, к которому всего и надо что написать плагинов. Но оказалось, что можно сделать весь процесс несколько более удобным, добавив пару фич и немного кода.
+5
+34
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.
Подразумевается, что вы используете Unix-подобную операционную систему и менеджер пакетов, эквивалентный aptitude. Найти эквивалент aptitude почти для любой операционной системы, в том числе и для Mac OS X, для вас не составит никакого труда.
Руководство написно для версий Django 1.4 или выше. Если вы используете более раннюю версию, то вам придется самостоятельно найти wsgi модуль для нее. Также вы заметите, что файловая структура проекта будет немного отличаться от представленной здесь.
Общая идея
Веб-сервер может по запросу отдавать пользователям файлы из своей файловой системы, однако он не может напрямую работать с Djangо приложениями. Веб-серверу нужен интерфейс, который будет запускать Django приложение, передавать ему запрос от пользователя и возвращать ответ.
Для выполнения этих задач был разработан Web Server Gateway Interface — WSGI — стандарт взаимодействия Python программ и веб-сервра.
uWSGI — одна из реализаций WSGI. В этом руководстве мы установим и настроим uWSGI для создания Unix сокета и взаимодействия с веб-сервером по протоколу WSGI.
+27
Настройка удаленного интерпретатора на Pycharm для Django
3 мин
47K
В этой статье хочу рассказать, а также показать настройку полезного инструмента для удаленной разработки от компании JetBrains встроенное в IDE Pycharm. Такой инструмент есть уже давно, но многие разработчики относятся к этому не серьезно, и для внесения изменений в проект предпочитают разворачивать его локально. Когда намного легче на том-же сервере, сделать копию части проекта и изменять или тестировать на другом порту с помощью встроенных средств удаленного интерпретатора Pycharm. Конечно не во всех ситуациях это хороший вариант, но для правки, и доработки небольших проектов очень даже подходит. А если проект с нуля, то создавая его на удаленном сервере, исчезает потребность в переносе и адаптации его под сервер(хостинг), которые неизбежно ведут к появлению множества багов и несовместимостей.
К тому же такой подход нас избавляет от таких проблем:
• на разных серверах свой Unix и свои приколы, разворачивать локально и подгонять среду под особенности того или иного сервера может занять приличное количество времени;
• разные версии python;
• И если в файле req.txt для Django не указаны все зависимости;
и т.д.
+17
Вклад авторов
Azy 295.0shulyndina 255.0fata1ex 247.6grigoryvp 241.0Dreadatour 220.0junk 194.0printf 186.0kesn 180.0marazm 170.0

