Your SlideShare is downloading. ×
Что нового в Django 1.4
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Что нового в Django 1.4

1,795
views

Published on

Краткий обзор новинок в Django 1.4

Краткий обзор новинок в Django 1.4

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,795
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Что нового в Django 1.4 Илья Барышев Moscow Django Meetup #2
  • 2. Чуточку статистики• ровно 1 год разработки• ~1900 коммитов• 28 core committers• 524 человека в AUTHORS.txt
  • 3. Версии PythonDjango 1.3 Python 2.4-2.7Django 1.4 Python 2.5-2.7Django 1.5 Python 2.6-3.3*
  • 4. Часовые пояса
  • 5. ORM• bulk_create()• select_for_update()• prefetch_related()
  • 6. Структура проекта До 1.4 С 1.4mysite/ manage.py        __init__.py mysite/        manage.py        __init__.py        settings.py        settings.py        urls.py        urls.py        myapp/        myapp/                __init__.py                __init__.py                models.py                models.py
  • 7. Новый manage.py#!/usr/bin/env  pythonimport  os,  sysif  __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)
  • 8. Шаблон проекта http://bit.ly/django_project_templatedjango-­‐admin.py  startproject  -­‐-­‐template=<url>  <project> project_name/        fixtures/        public/        static/        templates/        __init__.py__        __local_settings.py        local_settings.py        settings.py        urls.py          wsgi.py .gitignore manage.py requirements.txt
  • 9. Админка• Пользовательские фильтры• Множественная сортировка• Новые методы 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
  • 10. Шаблоны• {%  elif  %}• {%  static  %}• |truncatechars• Key-value аргументы для тегов• assignment-теги• Контекстные пометки для перевода
  • 11. 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  }}.
  • 12. Контекстные пометки для перевода{%  trans  "May"  context  "month  name"  %}{%  trans  "May"  context  "verb"  %}{%  blocktrans  with  name=user.username  context  "greeting"  %}        Hi  {{  name  }}{%  endblocktrans  %}
  • 13. URL i18n
  • 14. Безопасность• Новый механизм хэширования паролей• Защита от кликджекинга (clickjacking)• Улучшения в защите от CSRF- и XSS-атак
  • 15. Криптографическая подпись• Низкоуровневое API (Signer)• Бэкенд сессий на подписанных куках• Новый FormWizard на CBV
  • 16. Тестирование• 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)
  • 17. Браузерное тестирование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)
  • 18. Спасибоbaryshev@futurecolors.ru@coagulant http://blog.futurecolors.ru/

×