SlideShare a Scribd company logo
Django.
Дополнительные
темы

Александр Бекбулатов
План лекции
1. Скрипт управления django приложением.

2. Middleware.
3. Использование сессий.
4. Приложение auth.
5. Class Based Views.
6. Расширение фильтров и тэгов в
шаблонизаторе.
7. Другие приложения из коробки.
8. Оптимизация производительности
2
Скрипт управления django
приложением

3
Управление django приложением
Зачем?
• Standalone скрипты
• Скрипты запуска по крону
Как?
• Ручная инициализация приложения
• Management команды

4
Ручная инициализация
import os
import sys
if __name__ == "__main__":
lib_path = 'path/to/project'
if not lib_path in sys.path:
sys.path.append(lib_path)
os.environ['DJANGO_SETTINGS_MODULE'] = 
'ask_pupkin.settings'
# from django.conf import settings
from ask.models import User
…
5
Management команды
Куда поместить?
ask/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
fill_db.py
tests.py
views.py

6
Management команды
class Command(BaseCommand):
help = 'Fill database with test data'
def handle(self, *args, **options):
verbosity =
int(options.get('verbosity', 1))
for i in xrange(USER_COUNT):
user = User(
name=get_random_string(10),
email=get_random_email()
)
user.save()
if verbosity > 1:
self.stdout.write('Successfully
imported %d users' % USER_COUNT)
7
Управление django приложением
Возможности
• Запуск скриптов для конкретного приложения
(manage.py sqlall ask)
• Несколько команд в одном файле (manage.py
fill_db users, manage.py fill_db questions)
• Дополнительные опции (--delete)

https://docs.djangoproject.com/en/dev/howto/custommanagement-commands/
8
Middleware

9
Middleware

10
Middleware
Примеры
• Обработка запроса
• Статистика
• Аутентификация
• Защита от CSRF
• Редиректы
• Кеширование

11
CSRF Атака

12
CSRF в Django
• «Небезопасные» методы POST, PUT и DELETE
• Установка cookie (csrftoken)
• Установка hidden поля (csrfmiddlewaretoken)
или заголовка (X-CSRFToken)

13
CSRF в Django
1. Для установки куки страница должна отдаваться
динамически
2. Кука может не ставиться, если передача контекста
идет через Context вместо RequestContext
3. Скрытое поле ставится тегом {% csrf_token
%}, используйте RequestContext (функция render)
4. Токен в ajax запросах удобнее передавать заголовком

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
14
Использование сессий
Способы хранения
• Файловые сессии
• Сессии в БД
• Сессии в куках

15
Использование сессий
def login(request):
username = request.POST.get('username')
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
return HttpResponse("Such user is not
created.")
# bad practice!!!
if user.password ==
request.POST.get('password'):
request.session['user_id'] = user.id
return HttpResponse("You're logged in.")
else:
return HttpResponse("Your username and
password didn't match.")
16
Использование сессий
def logout(request):
try:
del request.session['user_id']
except KeyError:
pass
return HttpResponse("You're logged out.")

17
Декораторы в python
def makebold(fn):
def wrapped():
return "<b>" + fn() + "</b>"
return wrapped
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped

18
Декораторы в python
@makebold
@makeitalic
def hello():
return "hello world"
// hello = makebold(makeitalic(hello))

print hello() ## returns <b><i>hello world</i></b>

19
Декораторы для Views
@require_POST
def vote_view(request):
# only POST method is allowed
pass
либо
url(r"^vote/", require_POST(vote)),

20
Django Views
Примеры

 Проверка HTTP методов
 Проверка прав доступа
 Кеширование

21
Django Auth

22
Django Auth
Возможности

 Пользователи
 Права и группы доступа
 Контроллеры login/logout

 Тесная интеграция с админкой

23
Django Auth
Модель User
 username (обязательное поле)

 first_name
 last_name
 email

 password (обязательное поле)
 is_staff
 is_active

 is_superuser
 …
24
Django Auth
Создание пользователей
from django.contrib.auth.models import User
user =
User.objects.create_user('masha', 'masha@mail.ru',
'password')

25
Django Auth
Login
def login_view(request):
username = request.POST.get('username')
password = request.POST.get('password')
user =
authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
else:
# 'disabled account' error message
else:
# 'invalid login' error message.
26
Django Auth
Logout
def logout_view(request):
logout(request)
# Redirect to a success page.

27
Django Auth
Login/Logout средствами django
1. Подключить в роутинге контроллеры входа и выхода
(r'^accounts/login/$', 'django.contrib.auth.views.logi

n')
(r'^accounts/logout/$', 'django.contrib.auth.views.log
out')

2. Создать шаблоны
registration/login.html
registration/logged_out.html

3. GET параметр next для возврата
28
Django Auth
Login/Logout средствами django
Страница авторизации:
LOGIN_URL = '/accounts/login/'

Страница профиля:
LOGIN_REDIRECT_URL = '/accounts/profile/'

Страница выхода:
LOGOUT_URL = '/accounts/logout/’

https://docs.djangoproject.com/en/dev/topics/auth/default/
29
Django Auth
Проверка авторизации во views
def my_view(request):
if not request.user.is_authenticated():
return redirect('/login/?next=%s' %
request.path)
user = request.user

@login_required
def my_view(request):
...

30
Django Auth
Проверка авторизации в шаблонах
{% if user.is_authenticated %}
Welcome, {{ user.username }}
{% else %}
Please log in.
{% endif %}

31
Django Auth
Расширение текущего пользователя
from django.contrib.auth.models import User

class UserProfile(models.Model):
user =
models.OneToOneField(User, related_name='profile')
rating = models.PositiveIntegerField()

>>> u = User.objects.get(username='masha')
>>> print u.profile.rating

32
Django Auth
Расширение текущего пользователя
• Другой уникальный ключ пользователя (email вместо

username)
• Дополнительные поля (в т. ч. обязательные)

https://docs.djangoproject.com/en/dev/topics/auth/customizing
/#extending-the-existing-user-model

33
Class Based Views

34
Class Based Views
•
•
•

•
•
•
•
•
•
•

•
35
Class Based Views
Контроллер-функция (пример 1)
def post_detail(request, pk):
try:
object = Post.objects.get(pk=pk)
except Post.DoesNotExist:
raise Http404
return render(
request, 'blog/post_detail.html',
{'object': object}
)
urlpatterns = patterns('',

url(r'^post/(?P<pk>d+)/$', post_detail, name='post
_detail'),
36
)
Class Based Views
Контроллер-класс (пример 1)
class PostDetail(generic.DetailView):
model=Post

urlpatterns = patterns('',
url(r'^post/(?P<pk>d+)/$', PostDetail.as_view(), n
ame='post_detail'),
)

37
Class Based Views
Контроллер-функция (пример 2)
def post_list(request):
paginator = Paginator(Post.objects.all(), 25)

page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
return render(
request, 'blog/post_list.html',
{'object_list': posts}
)
38
Class Based Views
Контроллер-класс (пример 2)
class PostList(generic.ListView):
model = Post
paginate_by = 25

39
Class Based Views
Контроллер-функция (пример 3)
@login_required
def category(request, pk):
cat = get_object_or_404(Category, pk=pk)
post_list = Post.objects.filter(category=cat)
return render(request, 'blog/category.html', {
'category': cat,
'post_list' : post_list
})

40
Class Based Views
Контроллер-класс (пример 3)
class CategoryListView(generic.ListView):
template_name = 'blog/category.html’
def get_queryset(self):
self.cat =
get_object_or_404(Category, pk=self.kwargs['pk'])
return Post.objects.filter(category=self.cat)
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return
super(CategoryListView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
context =
super(CategoryListView, self).get_context_data(**kwargs)
context['category'] = self.cat
return context

41
Class Based Views

42
Фильтры и теги в
шаблонизаторе

43
Построение урлов
Модель
class Post(models.Model):
…
@models.permalink
def get_absolute_url(self):
return ('post_detail', (self.pk,))
# либо
def get_absolute_url(self):
return
reverse('post_detail', args=(self.pk,))

44
Построение урлов
Роутинг
url(r'^(?P<pk>d+)/$', 'post_detail', name='post_de
tail'),

Шаблоны
<a href="{{ post.get_absolute_url }}">{{ post
}}</a>
<a href="{% url 'post_detail' post.pk %}">{{ post
}}</a>

45
Фильтры и теги в шаблонизаторе
 Фильтр
{{ post.content|cut:"<cut>" }}
 Simple Tag
{% current_time "%Y-%m-%d %I:%M %p" %}
 Inclusion tag
{% popular_tags 20 %}

46
Фильтры и теги в шаблонизаторе
 Assignment tags
{% get_current_time "%Y-%m-%d %I:%M %p" as
the_time %}
 Блок с закрывающим тегом

{% switch %} {% endswitch %}

47
Фильтры и теги в шаблонизаторе
Добавление тега
blog/
__init__.py
models.py
templatetags/
__init__.py
blog_tags.py
tests.py
views.py

48
Фильтры и теги в шаблонизаторе
from django import template
from blog.models import Post
register = template.Library()
@register.inclusion_tag('blog/tags/lastposts.html')
def last_posts():
return {'post_list': Post.objects.all()[:5]}

49
Фильтры и теги в шаблонизаторе
Шаблон
<ul>
{% for object in post_list %}
<li><a href="{{ object.get_absolute_url}}">{{
object }}</a></li>
{% endfor %}
</ul>

Подключение
{% load blog_tags %}
{% last_posts %}

https://docs.djangoproject.com/en/dev/howto/custom-templatetags/
50
Приложения из коробки

51
Административная консоль
Подключение
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
…
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)

52
Административная консоль
Подключение
from blog.models import Category, Post
from django.contrib import admin
class PostAdmin(admin.ModelAdmin):
date_hierarchy = 'creation_date'
list_display = ('title', 'category')
list_filter = ('category',)
search_fields = ('title',)
admin.site.register(Category)
admin.site.register(Post, PostAdmin)

53
Административная консоль

54
Административная консоль

55
Административная консоль

56
Static Files
Возможности
 Сбор статики

 Отдача статики (???)
 Шаблонные теги

Сбор статики
STATIC_ROOT = "/var/www/blog.me/static/"

python manage.py collectstatic
57
ContentTypes framework
Article
id
title
…

Photo
id
title
…
TaggedItem
id
content_type_id
object_id
tag_id

Tag
id
title
…
58
Оптимизация

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

59
Кеширование
Схема кеширования








60
Кеширование
Условия кеширования

61
Кеширование
Поддержка

62
Кеширование
Уровни кеширования

63
•
•
•

64
•
•
•

•

•

65
Полезные советы
 Избегайте дублирования кода DRY
 Делайте короче и проще KISS

66
1. Авторизация и регистрация пользователей на сайте
2. Блок с последними зарегистрированными
пользователями
http://tp.mail.ru/blog/Web/935.html

67
Спасибо за внимание
Александр
Бекбулатов, a.bekbulatov@c
orp.mail.ru

More Related Content

What's hot

Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Python Meetup
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
Яковенко Кирилл
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка Django
Vladimir Rudnyh
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
MoscowDjango
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиZestranec
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложений
Zestranec
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
Positive Hack Days
 
10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)
Roman Brovko
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД
Roman Brovko
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работыPaul Stashevsky
 
PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)Dmitry Evteev
 
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Dmitry Evteev
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
Igor Shkulipa
 
Javascript
JavascriptJavascript
Javascript
Vasya Petrov
 
Эффективное программирование на NodeJS
Эффективное программирование на NodeJSЭффективное программирование на NodeJS
Эффективное программирование на NodeJS
Yura Bogdanov
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работы
Paul Stashevsky
 

What's hot (20)

Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка Django
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложений
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работы
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)
 
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
Javascript
JavascriptJavascript
Javascript
 
Эффективное программирование на NodeJS
Эффективное программирование на NodeJSЭффективное программирование на NodeJS
Эффективное программирование на NodeJS
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работы
 
176023
176023176023
176023
 

Similar to Web осень 2013 лекция 8

Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7Technopark
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11dva
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
Ontico
 
Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»
Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»
Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»
Mail.ru Group
 
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoРазработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoMoscowDjango
 
Контейнер сервисов
Контейнер сервисовКонтейнер сервисов
Контейнер сервисов
Ruslan Hanov
 
Что нового в Django 1.4
Что нового в Django 1.4Что нового в Django 1.4
Что нового в Django 1.4
Илья Барышев
 
12 - Web-технологии. Django модели
12 - Web-технологии. Django модели12 - Web-технологии. Django модели
12 - Web-технологии. Django модели
Roman Brovko
 
Decorators' recipes
Decorators' recipesDecorators' recipes
Decorators' recipes
Yury Yurevich
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Minktyomo4ka
 
Pycon Russia 2013 - Разработка через тестирование в Python и Django
Pycon Russia 2013 - Разработка через тестирование в Python и DjangoPycon Russia 2013 - Разработка через тестирование в Python и Django
Pycon Russia 2013 - Разработка через тестирование в Python и DjangoIlya Shalyapin
 
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
it-people
 
Разработка через тестирование в Python и Django #pyconru
Разработка через тестирование в Python и Django #pyconruРазработка через тестирование в Python и Django #pyconru
Разработка через тестирование в Python и Django #pyconru
JetStyle
 
Django Rest Framework vs Graph Ql
Django Rest Framework vs Graph QlDjango Rest Framework vs Graph Ql
Django Rest Framework vs Graph Ql
Attract Group
 
Drf vs Graphql
Drf vs GraphqlDrf vs Graphql
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюГлеб Тарасов
 
Как мы уменьшили сложность наших проектов
Как мы уменьшили сложность наших проектовКак мы уменьшили сложность наших проектов
Как мы уменьшили сложность наших проектов
Boris Tsema
 
Введение в Django
Введение в DjangoВведение в Django
Введение в Django
Илья Барышев
 
Django шахрай. версия 4
Django шахрай. версия 4Django шахрай. версия 4
Django шахрай. версия 4
smikler
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
it-people
 

Similar to Web осень 2013 лекция 8 (20)

Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
 
Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»
Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»
Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»
 
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoРазработка расширяемых приложений на Django
Разработка расширяемых приложений на Django
 
Контейнер сервисов
Контейнер сервисовКонтейнер сервисов
Контейнер сервисов
 
Что нового в Django 1.4
Что нового в Django 1.4Что нового в Django 1.4
Что нового в Django 1.4
 
12 - Web-технологии. Django модели
12 - Web-технологии. Django модели12 - Web-технологии. Django модели
12 - Web-технологии. Django модели
 
Decorators' recipes
Decorators' recipesDecorators' recipes
Decorators' recipes
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Mink
 
Pycon Russia 2013 - Разработка через тестирование в Python и Django
Pycon Russia 2013 - Разработка через тестирование в Python и DjangoPycon Russia 2013 - Разработка через тестирование в Python и Django
Pycon Russia 2013 - Разработка через тестирование в Python и Django
 
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
 
Разработка через тестирование в Python и Django #pyconru
Разработка через тестирование в Python и Django #pyconruРазработка через тестирование в Python и Django #pyconru
Разработка через тестирование в Python и Django #pyconru
 
Django Rest Framework vs Graph Ql
Django Rest Framework vs Graph QlDjango Rest Framework vs Graph Ql
Django Rest Framework vs Graph Ql
 
Drf vs Graphql
Drf vs GraphqlDrf vs Graphql
Drf vs Graphql
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
 
Как мы уменьшили сложность наших проектов
Как мы уменьшили сложность наших проектовКак мы уменьшили сложность наших проектов
Как мы уменьшили сложность наших проектов
 
Введение в Django
Введение в DjangoВведение в Django
Введение в Django
 
Django шахрай. версия 4
Django шахрай. версия 4Django шахрай. версия 4
Django шахрай. версия 4
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
Technopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
Technopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
Technopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Web осень 2013 лекция 8