django cheBit'11

29
фреймворк, который позволяет экономить время на веб-разработку и превращает разработку вэб- приложений в удовольствие ИСАЕВ ИГОРЬ

Transcript of django cheBit'11

Page 1: django cheBit'11

фреймворк, который позволяет экономить время на веб-разработку

и превращает разработку вэб-приложений в удовольствие

ИСАЕВ ИГОРЬ

Page 2: django cheBit'11

1 Что такое  django? 

2 Устройство и возможности 

Page 3: django cheBit'11

Django Django (Джанго) — свободный фреймворк для веб­приложений на языке Python.

Последняя версия1.3 (23 марта 2011)

ЛицензияBSD

Разработчики●  Адриан Головатый●  Саймон Виллисон●  Джекоб Каплан­Мосс

­ 1 ­

Page 4: django cheBit'11

Кто использует?

­ 2 ­

Page 5: django cheBit'11

История

­ 3 ­

2003: Kansas, USA 2005: BSD & v0.90 2008: v1.0 2011: v1.3 

Page 6: django cheBit'11

­ 4 ­

Основные принципы

●  don't repeat yourself●  слабая зависимость и гибкость●  быстрая разработка

Page 7: django cheBit'11

­ 5 ­

Документация

●  Официальная документация ●  Множество книг●  Сообщество●  softwaremaniacs.org

Page 8: django cheBit'11

­ 6 ­

Python

●  Читаемость и лаконичность ●  Мультипарадигменный язык●  Стандартная библиотека

Page 9: django cheBit'11

­ 7 ­

Python

TIOBE Programming Community Index

Page 10: django cheBit'11

ПроизводительностьDjango

­ 8 ­

С  производительностью у

django все хорошо

Page 11: django cheBit'11

Устройство 

­ 9 ­

ModelTemplateViewURL

Page 12: django cheBit'11

Модель 

­ 10 ­

Уровень доступа к даннымORM django:

# Создание таблицыclass Post(models.Model):

author = models.ForeignKey(Author) title = models.CharField(max_length=200)slug = models.SlugField(max_length=200)body = models.TextField() pub_date = models.DateTimeField(auto_now_add=True) is_active = models.BooleanField(default=True)

Page 13: django cheBit'11

Модель 

­ 11 ­

Уровень доступа к даннымORM django:

# Получение данныхposts = Post.objects.all()[:5]

posts = Post.objects.filter(post_type=‘rant’)

posts = Post.objects.filter(author__name=‘Rob’)

posts = Post.objects.filter(author__name=‘Rob’).order_by(‘type’)

post = Post.objects.get(id=24)

Page 14: django cheBit'11

Шаблон 

­ 12 ­

Уровень презентационной логики

{% extends "base.html" %} {# загрузить родительский шаблон #}

{% block content %} {# заполнить содержимое блока #}

<table>

{% for item in items %}<tr class="{% cycle odd,even %}"><td>{{ item.name }}</td> <td>{{ item.price }}</td> </tr> 

{% endfor %}

</table>

{% endblock %}

Page 15: django cheBit'11

Представление Уровень бизнес логики

def posts_by_type(request, type):# Показать сообщения конкретного типа

posts = Post.objects.filter(type=type)return render_to_response( ‘postsbytype.html’, {‘posts’: posts})

def new_post(request):# Добавить новое сообщение

if request.method == ‘POST’:form = PostForm(request.POST)if form.is_valid(): 

form.save() else:

form = PostForm() return render_to_response( ‘mytemplate.html’, {‘form’: form})

Page 16: django cheBit'11

Диспетчер URL

­ 14 ­

urlpatters = patterns(‘’,(’^my/favorite/color/$’, ‘blog.views.my_fav_color’),

(‘^post/new/$’, ‘blog.views.new_post’),

(‘^posts/(d{4})/$’, ‘blog.views.year_archive’), (‘^posts/(d{4})/(d{2})/$’, ‘blog.views.month_archive’),(‘^posts/(?P<slug>[a­z­]*)/$’, ‘blog.views.show_post’), 

)

Page 17: django cheBit'11

Возможности 

­ 15 ­

●  Встроенный веб­сервер●  Встроенный интерфейс администратора●  Библиотека создания форм●  Система кэширования●  Интернационализация ●  Подключаемая архитектура приложений●  Авторизация и аутентификация

Page 18: django cheBit'11

Встроенныйвеб­сервер

­ 16 ­

python manage.py runserver

Page 19: django cheBit'11

Админка 

­ 17 ­

Page 20: django cheBit'11

Админка 

­ 18 ­

Page 21: django cheBit'11

Библиотека создания форм

­ 19 ­

# Создание формыclass ContactForm(forms.Form):

subject = forms.CharField(max_length=100)message = forms.CharField()sender = forms.EmailField()cc_myself = forms.BooleanField(required=False)

Django сделает за нас:●  Нарисует форму целиком или отдельное поле●  Произведет проверку введенных данных 

Page 22: django cheBit'11

Библиотека создания форм

­ 20 ­

# Создание формы из моделиPostForm(forms.ModelForm): 

class Meta: model = Post

Django сделает за нас:●  Нарисует форму на основе модели●  Произведет проверку введенных данных ●  Сохранит полученные данные в таблицу

Page 23: django cheBit'11

Системакэширования 

­ 21 ­

Что можно кэшировать?●  весь сайт●  конкретную страницу●  участок шаблона

Типы хранилищ:●  memcached●  база данных●  файловая система●  локальная память

Page 24: django cheBit'11

i18n

­ 22 ­

1 Вставить переводимые строки2 Выполнить перевод

Page 25: django cheBit'11

Подключаемая архитектура приложений 

­ 23 ­

Не надо изобретать велосипед!

Page 26: django cheBit'11

Авторизация и аутентификация 

­ 24 ­

Page 27: django cheBit'11

Недостатки 

­ 25 ­

1 Логотип

Page 28: django cheBit'11

ВОПРОСЫ:

Page 29: django cheBit'11

СПАСИБОЗА

ВНИМАНИЕ