Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Планы
2010-03-06 22:15:07

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

Исходники перевода будут выложены в формате DocBook XML в Git. Патчи с исправлениями и, может быть, переводами оставшихся глав будут приниматься, проверяться и выкладываться на сайт. Думаю, это поможет всем желающим поучаствовать в данном проекте.


Выложена шестая глава
2009-11-12 19:52:46

Несмотря на страшную загруженность была завершена работа по проверке перевода шестой главы, который был предоставлен Дмитрием aka Alerion. Огромное ему спасибо за проделанную работу.


Седьмая глава переведена
2009-09-03 12:05:29

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

P.S. Скоро обещают прислать перевод шестой главы...


Пятая глава переведена
2009-08-26 21:45:40

На фоне решения сложной (для меня) проблемы с дизайном в стороннего проекта, сегодня за день перевёл пятую главу книги. Всё выложено на сайт. Я пропустил совсем немного английского текста. Места, к которым я планирую вернуться, отмечены словом FIXME. Переводы такого текста можно присылать через жалобную систему.


Книга о Django
2009-08-22 22:10:20

Камрад Plesser любезно предоставил книгу Django. Разработка веб-приложений на Python. Я выделил время на её изучение. Первое время, я даже начал подумывать о завершении работы над переводом второй версии DjangoBook. Но дочитав, понял, что надо продолжать.

Моё резюме книги: Очень хороший материал для человека решившего перейти на Django/Python с других платформ. Материал подаётся наглядно и достаточно подробно. Разбирается работа нескольких приложений: блог, фотогалерея и так далее.

Но!

Книгу писали до выхода версии Django 1.0. Там есть моменты, которые не соответствуют действительности (я имею в виду версию из SVN). И вообще, после года работы с Django понимаешь, что на самом деле проекты надо делать не так как пишут в книжках. Так что, перевод DjangoBook будет продолжен. А там можно будет подумать о книге «Django: Используем по-взрослому.»



Работа с исключениями

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

# Это неправильный код!
from django.contrib.auth.models import User, Group
from project.authuser.models import UserProfile
from project.po.models import RO

# Получение адреса пользователя из профайла
def get_address(request):
    profile = request.user.get_profile()
    address = ''
    if profile:
        address = profile.address
    return address

# Добавление пользователя в группу
SOME_GROUP_ID = 42
def join_user_to_group(request):
    group = Group.objects.get(id=SOME_GROUP_ID)
    if group:
        request.user.add(group)
        return True
    return False

# Получаем данные из базы
def get_records(request):
    org = RO.objects.get(id = request.user.get_profile().org.id)
    if org:
        return org
    return None

Выглядит всё это очень ужасно, даже если закрыть глаза на явные ошибки.

Попробуем переписать это всё с использованием обработки исключений:

from django.contrib.auth.models import User, Group
from project.authuser.models import UserProfile
from project.po.models import RO

# Получение адреса пользователя из профайла
def get_address(request):
    try:
        return request.user.get_profile().address
    except UserProfile.DoesNotExist:
        return 'Профайл отсутствует'

# Добавление пользователя в группу
SOME_GROUP_ID = 42
def join_user_to_group(request):
    try:
        group = Group.objects.get(id=SOME_GROUP_ID)
        request.user.add(group)
        return True
    except Group.DoesNotExist:
        return False

# Получаем данные из базы
def get_records(request):
    try:
        return RO.objects.get(id = request.user.get_profile().org.id)
    except UserProfile.DoesNotExist:
        print 'Профайл отсутствует'
        return None
    except RO.DoesNotExist:
        print 'Нет данных'
        return None

По-моему, так будет лучше.


Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
1049 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID