Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Что нового в Django 1.5

Что нового в Django 1.5

Илья Барышев (Future Colors)
Краткий обзор новых фич готовящегося релиза и советы по переходу.

Moscow Python Meetup

January 24, 2013
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. #  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
  2. Обращаемся к модели #  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()
  3. 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()
  4. poll  =  Poll.objects.all()[0] >>  1  query choice  =  poll.choice_set.all()[0] >>

     1  query choice.poll  is  poll >>  0  queries Кэширование related моделей
  5. 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)    
  6. {%  verbatim  %} {%  verbatim  %}     {%  endverbatim

     %} JQuery Template {{if  morning}}Drink  coffee.{{/if}}
  7. 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)        });
  8. {{  view.template_name  }} Переменная {{ view }} body.html {{  view.my_attribute

     }} Hey class  MyView(TemplateView):        template_name  =  'body.html'        my_attribute  =  'Hey'
  9. #  Django  1.2 {%  url  viewname  %} #  Django  1.3

    {%  load  url  from  future  %} {%  url  'viewname'  %} #  Django  1.5 {%  url  'viewname'  %}
  10. 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 в шаблонах
  11. #  python  2 for  k,  v  in  mydict.iteritems(): #  python

     2  &  3 import  six for  k,v  in  six.iteritems(mydict):
  12. #  python  2.6  &  3   from  __future__  import  print_function

    print('Hello  world!',  end='  ') #  python  2 print  'Hello  world!', #  python  3 print('Hello  world!',  end='  ')
  13. 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/