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
What's New in Django 1.3
Search
Andrew Godwin
May 25, 2011
Programming
0
95
What's New in Django 1.3
A talk I gave at DJUGL in May of 2011
Andrew Godwin
May 25, 2011
Tweet
Share
More Decks by Andrew Godwin
See All by Andrew Godwin
Reconciling Everything
andrewgodwin
1
260
Django Through The Years
andrewgodwin
0
160
Writing Maintainable Software At Scale
andrewgodwin
0
400
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
310
Async, Python, and the Future
andrewgodwin
2
610
How To Break Django: With Async
andrewgodwin
1
670
Taking Django's ORM Async
andrewgodwin
0
680
The Long Road To Asynchrony
andrewgodwin
0
590
The Scientist & The Engineer
andrewgodwin
1
700
Other Decks in Programming
See All in Programming
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
770
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
1.8k
良いユニットテストを書こう
mototakatsu
11
3.5k
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
Rubyでつくるパケットキャプチャツール
ydah
0
160
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
580
Оптимизируем производительность блока Казначейство
lamodatech
0
940
快速入門可觀測性
blueswen
0
490
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.3k
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
630
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
440
Featured
See All Featured
Fireside Chat
paigeccino
34
3.1k
Navigating Team Friction
lara
183
15k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Building an army of robots
kneath
302
45k
How GitHub (no longer) Works
holman
312
140k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
240
Bash Introduction
62gerente
610
210k
Become a Pro
speakerdeck
PRO
26
5.1k
How to train your dragon (web standard)
notwaldorf
89
5.8k
It's Worth the Effort
3n
183
28k
Adopting Sorbet at Scale
ufuk
74
9.2k
Transcript
Andrew Godwin http://www.flickr.com/photos/caroslines/1371200717/ What's new in Django 1.3?
Hi, I'm Andrew. Serial Python developer Django core committer Co-founder
of ep.io (Python hosting platform)
Django: A Very Brief History Initial release in 2005 1.0
released in 2008 1.3 released March 2011
1.3 was the "bugfix release" The plan: No major features,
quick release
1.3 was the "bugfix release" The plan: No major features,
quick release The result: 2 major features, 10 months
1.3 was the "bugfix release" The plan: No major features,
quick release The result: 2 major features, 10 months We'll get the next one out quicker...
New Features Class-based views Logging contrib.staticfiles unitttest2 on_delete TemplateResponse
Notable Changes CSRF on AJAX requests Less swearwords Translation/i18n improvements
No more mod_python No more XMLField render() shortcut
Class-Based Views Biggest change in 1.3 Not required for all
new views Designed to simplify common patterns
CBV: Before def object_detail( request, year, month, day, queryset, date_field,
month_format='%b', day_format='%d', object_id=None, slug=None, slug_field='slug', template_name=None, template_name_field=None, template_loader=loader, extra_context=None, context_processors=None, template_object_name='object', mimetype=None, allow_future=False ):
CBV: After class AccountDetail(DetailView): model = Account context_object_name = "account"
slug_field = "snail" def get_context_data(self, **kwargs): context = super(AccountDetail, self)\ .get_context_data(**kwargs) context['books'] = Book.objects.all() return context
CBV: Simple views too! class AccountDetail(TemplateView): template_name = "mytempl.html" def
get_context_data(self, **kwargs): return { "books": Book.objects.all(), "is_evil": True, }
Other uses Refactor common parts into superclasses Mixins for adding-on
functionality Mutate the input or output
Logging Now actually sensible, not just emails Uses standard Python
logging library Configured using the LOGGING setting
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'handlers': { 'console':{
'level': 'DEBUG', 'class': 'logging.StreamHandler', }, 'mail_admins': { 'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler', } }, 'loggers': { 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', }, 'myproject.custom': { 'handlers': ['console', 'mail_admins'], 'level': 'INFO', } } }
staticfiles Lets apps ship with their static files View to
serve them in development ./manage.py collectstatic for production
unittest2 Better than unittest (obviously) Many new assertion methods Test
skipping Expected failures Much more...
unittest2 Bundled with Django Just change: import unittest from django.utils
import unittest to
on_delete Deleting rows just got better! Cascade delete (as before)
Set to NULL Raise ProtectedError Set to arbitary value
TemplateResponse A HTTPResponse class you can change Template only run
at end of middleware Change context, or even template
TemplateResponse Example from django.template.response \ import TemplateResponse def blog_index(request): return
TemplateResponse( request, 'entry_list.html', {'entries': Entry.objects.all()}, ) ... response.context_data['foo'] = 'bar'
CSRF on AJAX requests CSRF is a hard, hard problem
Flash plus 307 redirect = fail You'll have to start supplying CSRF tokens to your JavaScript
Less Swearwords Guaranteed, or your money back. Also gone: "asshat",
"asshead".
Translation / i18n Marking for ambiguous meanings Overrideable translations for
apps Deprecation of project-wide translations
No more mod_python It's dead, Jim. If you're still using
it, move to mod_wsgi or gunicorn now, please.
No more XMLField We're not really sure why it was
there in the first place.
render() shortcut Like render_to_response, but : Less characters to type
Uses RequestContext Handy for those not on CBV
How do you upgrade? Should be mostly seamless. You'll get
warnings for deprecated settings (e.g. DATABASE_NAME)
What's going to be in 1.4? We're not quite sure
yet. Possible: App refactor HTML5 doctype ORM changes
Future features GSOC should give us: Template engine refactor New
form rendering Schema alteration low-level API Composite fields
Thank you. Andrew Godwin @andrewgodwin
[email protected]