django cheBit'11
-
Upload
dva -
Category
Technology
-
view
902 -
download
0
Transcript of django cheBit'11
фреймворк, который позволяет экономить время на веб-разработку
и превращает разработку вэб-приложений в удовольствие
ИСАЕВ ИГОРЬ
1 Что такое django?
2 Устройство и возможности
Django Django (Джанго) — свободный фреймворк для вебприложений на языке Python.
Последняя версия1.3 (23 марта 2011)
ЛицензияBSD
Разработчики● Адриан Головатый● Саймон Виллисон● Джекоб КапланМосс
1
Кто использует?
2
История
3
2003: Kansas, USA 2005: BSD & v0.90 2008: v1.0 2011: v1.3
4
Основные принципы
● don't repeat yourself● слабая зависимость и гибкость● быстрая разработка
5
Документация
● Официальная документация ● Множество книг● Сообщество● softwaremaniacs.org
6
Python
● Читаемость и лаконичность ● Мультипарадигменный язык● Стандартная библиотека
7
Python
TIOBE Programming Community Index
ПроизводительностьDjango
8
С производительностью у
django все хорошо
Устройство
9
ModelTemplateViewURL
Модель
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)
Модель
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)
Шаблон
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 %}
Представление Уровень бизнес логики
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})
Диспетчер 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>[az]*)/$’, ‘blog.views.show_post’),
)
Возможности
15
● Встроенный вебсервер● Встроенный интерфейс администратора● Библиотека создания форм● Система кэширования● Интернационализация ● Подключаемая архитектура приложений● Авторизация и аутентификация
Встроенныйвебсервер
16
python manage.py runserver
Админка
17
Админка
18
Библиотека создания форм
19
# Создание формыclass ContactForm(forms.Form):
subject = forms.CharField(max_length=100)message = forms.CharField()sender = forms.EmailField()cc_myself = forms.BooleanField(required=False)
Django сделает за нас:● Нарисует форму целиком или отдельное поле● Произведет проверку введенных данных
Библиотека создания форм
20
# Создание формы из моделиPostForm(forms.ModelForm):
class Meta: model = Post
Django сделает за нас:● Нарисует форму на основе модели● Произведет проверку введенных данных ● Сохранит полученные данные в таблицу
Системакэширования
21
Что можно кэшировать?● весь сайт● конкретную страницу● участок шаблона
Типы хранилищ:● memcached● база данных● файловая система● локальная память
i18n
22
1 Вставить переводимые строки2 Выполнить перевод
Подключаемая архитектура приложений
23
Не надо изобретать велосипед!
Авторизация и аутентификация
24
Недостатки
25
1 Логотип
ВОПРОСЫ:
СПАСИБОЗА
ВНИМАНИЕ