Что нового в Django 1.4
-
Upload
- -
Category
Technology
-
view
1.843 -
download
5
description
Transcript of Что нового в Django 1.4
![Page 1: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/1.jpg)
Что нового в Django 1.4Илья Барышев
Moscow Django Meetup #2
![Page 2: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/2.jpg)
Чуточку статистики
• ровно 1 год разработки
• ~1900 коммитов
• 28 core committers
• 524 человека в AUTHORS.txt
![Page 3: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/3.jpg)
Версии Python
Django 1.3 Python 2.4-2.7
Django 1.4 Python 2.5-2.7
Django 1.5 Python 2.6-3.3*
![Page 4: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/4.jpg)
Часовые пояса
![Page 5: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/5.jpg)
ORM
• bulk_create()
• select_for_update()
• prefetch_related()
![Page 6: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/6.jpg)
Структура проектаДо 1.4 С 1.4
mysite/ __init__.py manage.py settings.py urls.py myapp/ __init__.py models.py
manage.pymysite/ __init__.py settings.py urls.py myapp/ __init__.py models.py
![Page 7: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/7.jpg)
Новый manage.py
#!/usr/bin/env pythonimport os, sys
if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
![Page 8: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/8.jpg)
Шаблон проекта
project_name/ fixtures/ public/ static/ templates/ __init__.py__ __local_settings.py local_settings.py settings.py urls.py wsgi.py.gitignoremanage.pyrequirements.txt
http://bit.ly/django_project_template
django-‐admin.py startproject -‐-‐template=<url> <project>
![Page 9: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/9.jpg)
Админка
• Пользовательские фильтры• Множественная сортировка• Новые методы ModelAdmin• ModelAdmin.save_related(self, request, form, formsets, change)
• ModelAdmin.get_list_display(self, request)
• ModelAdmin.get_list_display_links(self, request, list_display)
• ADMIN_MEDIA_PREFIX deprecated
![Page 10: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/10.jpg)
Шаблоны
• {% elif %}
• {% static %}
• |truncatechars
• Key-value аргументы для тегов
• assignment-теги
• Контекстные пометки для перевода
![Page 11: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/11.jpg)
Assignment-теги
@register.assignment_tagdef get_current_time(format_string): return datetime.datetime.now().strftime(format_string)
{% get_current_time "%Y-‐%m-‐%d %I:%M %p" as the_time %}The time is {{ the_time }}.
![Page 12: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/12.jpg)
Контекстные пометки для перевода
{% trans "May" context "month name" %}{% trans "May" context "verb" %}{% blocktrans with name=user.username context "greeting" %} Hi {{ name }}{% endblocktrans %}
![Page 13: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/13.jpg)
URL i18n
![Page 14: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/14.jpg)
Безопасность
• Новый механизм хэширования паролей
• Защита от кликджекинга (clickjacking)
• Улучшения в защите от CSRF- и XSS-атак
![Page 15: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/15.jpg)
Криптографическая подпись
• Низкоуровневое API (Signer)
• Бэкенд сессий на подписанных куках• Новый FormWizard на CBV
![Page 16: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/16.jpg)
Тестирование
• with TestCase.settings(**kwargs)
• и @TestCase.override_settings(**kwargs)• SimpleTestCase• assertRaisesMessage(expected_exception,
expected_message, callable_obj=None, *args, **kwargs)
• assertFieldOutput(self, fieldclass, valid, invalid, field_args=None, field_kwargs=None,empty_value=u'')
• assertHTMLEqual(html1, html2, msg=None)
![Page 17: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/17.jpg)
Браузерное тестированиеclass AdminSeleniumWebDriverTestCase(LiveServerTestCase): ...
class DateTimePickerSelenium(AdminSeleniumWebDriverTestCase):
def test_show_hide_date_time_picker_widgets(self):
self.admin_login(username='super', password='123') # Open a page that has a date and time picker widgets self.selenium.get('%s%s' % (self.live_server_url, '/admin_widgets/member/add/'))
# Check that the date picker is hidden self.assertEqual( self.get_css_value('#calendarbox0', 'display'), 'none') # Click the calendar icon self.selenium.find_element_by_id('calendarlink0').click() # Check that the date picker is visible self.assertEqual( self.get_css_value('#calendarbox0', 'display'), 'block')
![Page 18: Что нового в Django 1.4](https://reader034.fdocuments.us/reader034/viewer/2022042512/55662644d8b42a61238b4f91/html5/thumbnails/18.jpg)
Спасибо
@coagulant http://blog.futurecolors.ru/