Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Что нового в Django 1.5
Search
Moscow Python Meetup
PRO
January 24, 2013
Programming
3
1.7k
Что нового в Django 1.5
Илья Барышев (Future Colors)
Краткий обзор новых фич готовящегося релиза и советы по переходу.
Moscow Python Meetup
PRO
January 24, 2013
Tweet
Share
More Decks by Moscow Python Meetup
See All by Moscow Python Meetup
Moscow Python Meetup №89 Алексей Жиряков (онлайн-кинотеатр KION, TechLead Backend команды витрины). Доверяй, но проверяй: как KION обрабатывает свыше 400М продуктовых событий в сутки.
moscowdjango
PRO
0
13
Moscow Python Meetup №88. Евгений Блинов (VK, Руководитель команды). Токены отмены как паттерн и как библиотека cantok
moscowdjango
PRO
0
53
Moscow Python Meetup №89 Павел Мамаев (Сбер, Ведущий инженер по разработке). Классификация запросов клиентов. Дёшево и сердито
moscowdjango
PRO
0
25
Moscow Python Meetup №88. Александр Винокуров (Группа компаний "Самолет", руководитель группы разработки). Практическая сторона тестов
moscowdjango
PRO
0
53
Moscow Python Meetup №88. Иван Елфимов (Ostrovok.ru, тимлид). Переход от Statsd к Prometheus в большом Django-проекте
moscowdjango
PRO
0
48
Moscow Python Meetup №88. Александр Гончаров (Reef Technologies, старший разработчик). Рекрутинг на максималках: что бывает, если наймом занимаются сами программисты
moscowdjango
PRO
0
38
Moscow Python Meetup №87 Евгений Блинов (VK, руководитель команды). INSTLD: зависимости на автомате.
moscowdjango
PRO
0
71
Moscow Python Meetup №87. Сурен Хоренян (MTS AI). Hatch для сборки и распространения Python пакетов.
moscowdjango
PRO
0
73
Николай Хитров (Точка, Техлид). Мама, мы все тяжело больны!
moscowdjango
PRO
0
100
Other Decks in Programming
See All in Programming
PostmanでAPIの動作確認が楽になった話
h455h1
0
170
VSCodeでのDatabricks開発もお勧めしたい/I would also recommend Databricks development with VSCode.
kazumain
0
260
Git Lint
bkuhlmann
4
750
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
650
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
270
try! Swift Tokyo 初参加報告LT
hinakko2
0
220
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
PHPはいつから死んでいるかの調査
chiroruxx
1
400
Let's learn code review
riofujimon
2
420
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
331
56k
Statistics for Hackers
jakevdp
789
220k
Ruby is Unlike a Banana
tanoku
96
10k
The Invisible Customer
myddelton
114
12k
Rails Girls Zürich Keynote
gr2m
91
13k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
It's Worth the Effort
3n
180
27k
How to name files
jennybc
65
93k
Being A Developer After 40
akosma
57
580k
Building Adaptive Systems
keathley
31
1.9k
Web development in the modern age
philhawksworth
202
10k
Making the Leap to Tech Lead
cromwellryan
124
8.5k
Transcript
None
10 месяцев разработки ~1700 коммитов Переезд на гитхаб ~550 closed
PR Чуточку статистики
https://docs.djangoproject.com/en/dev/releases/1.5/ Улучшена документация • CBV • Testing Tutorial (part 5)
• Reusable apps • Writing your first patch for Django
Custom User Model
# myapp.models.py class MyUser(AbstractUser): email
= EmailField(max_length=254, ...) favorite_pony = CharField(max_length=20) ... USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['favorite_pony'] Пример custom User model
Обращаемся к модели # settings.py AUTH_USER_MODEL = 'myapp.MyUser' # Django
1.4 from django.contrib.auth.models import User # Django 1.5 from django.contrib.auth import get_user_model User = get_user_model()
AbstractUser User username first_name last_name email
is_staff is_active date_joined USERNAME_FIELD REQUIRED_FIELDS get_absolute_url() get_full_name() get_short_name()
AbstractBaseUser AbstractUser User password last_login get_username() is_anonymous() is_authenticated() set_password(...) check_password(...)
set_unusable_password() has_usable_password()
AbstractBaseUser AbstractUser User PermissionsMixin get_group_permissions(…) get_all_permissions(…) has_perm(…) has_perms(…) has_module_perms(…) is_superuser
AbstractBaseUser AbstractUser User PermissionsMixin
Составные ключи index_together = [ ["pub_date",
"deadline"], ]
product.save( update_fields=['name'] ) Частичное сохранение моделей
poll = Poll.objects.all()[0] >> 1 query choice = poll.choice_set.all()[0] >>
1 query choice.poll is poll >> 0 queries Кэширование related моделей
Streaming responses # 1.4 response = HttpResponse(content=myiterator) # 1.5 response
= StreamingHttpResponse( streaming_content=myiterator) def iterator(): for x in range(1,11): yield "%s\n" % x time.sleep(1)
{% verbatim %} {% verbatim %} {% endverbatim
%} JQuery Template {{if morning}}Drink coffee.{{/if}}
https://github.com/chrisdickinson/plate <script type="text/javascript" src="plate.js"> var template = new plate.Template(
'Hello {{ world }}'); template.render({world: 'everyone'}, function(err, data) { console.log(data) });
{{ view.template_name }} Переменная {{ view }} body.html {{ view.my_attribute
}} Hey class MyView(TemplateView): template_name = 'body.html' my_attribute = 'Hey'
# Django 1.2 {% url viewname %} # Django 1.3
{% load url from future %} {% url 'viewname' %} # Django 1.5 {% url 'viewname' %}
https://github.com/futurecolors/django-future-url django-‐make-‐future-‐url.py -‐-‐dry-‐run
QuerySet.bulk_create() работает с SQLite3 Сигнал user_login_failed Приятные мелочи Стандартные 404
и 500 {% if 'someapp.someperm' in perms %} GeoDjango PostGIS 2.0 loaddata(ignorenonexistent=True) Получение ContentType для прокси-моделей django.utils.timezone.localtime view.resolver_match django logger печататает в консоль mod_wsgi auth handler True, False, Null в шаблонах
Python 3*
Версии Python Django 1.3 Python 2.4+ Django 1.4 Python 2.5+
Django 1.5 Python 2.6+ Python 3.2+
django.utils.six в Django 1.4.2+
# python 2 for k, v in mydict.iteritems(): # python
2 & 3 import six for k,v in six.iteritems(mydict):
# python 2.6 & 3 from __future__ import print_function
print('Hello world!', end=' ') # python 2 print 'Hello world!', # python 3 print('Hello world!', end=' ')
https://github.com/mitsuhiko/python-modernize Автоматизируем six
http://python3porting.com/
None
django Pillow django-model-utils django-picklefield embedly-python pytils django-storages docutils south requests
django-discover-runner mock django-nose psycopg2 dj-database-url 3 http://moscowdjango.ru/py3/
Пробуйте Django 1.5 @ Пишите на Python 3
Спасибо
[email protected]
@coagulant http://blog.futurecolors.ru/