Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
What's New in Django 1.3
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Andrew Godwin
May 25, 2011
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
What's New in Django 1.3
A talk I gave at DJUGL in May of 2011
Andrew Godwin
May 25, 2011
More Decks by Andrew Godwin
See All by Andrew Godwin
Reconciling Everything
andrewgodwin
1
410
Django Through The Years
andrewgodwin
0
340
Writing Maintainable Software At Scale
andrewgodwin
0
550
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
430
Async, Python, and the Future
andrewgodwin
2
760
How To Break Django: With Async
andrewgodwin
1
840
Taking Django's ORM Async
andrewgodwin
0
870
The Long Road To Asynchrony
andrewgodwin
0
780
The Scientist & The Engineer
andrewgodwin
1
870
Other Decks in Programming
See All in Programming
カツオ、ご期待ください
suneo3476
0
130
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
280
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
30
13k
FreeBSDでZabbixを動かす
kenkino
0
340
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
420
すこし踏み込む CancellationToken
htkym
2
1.5k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
380
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.7k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
580
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
430
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Side Projects
sachag
456
43k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Done Done
chrislema
187
17k
Being A Developer After 40
akosma
91
590k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Test your architecture with Archunit
thirion
2
2.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
The agentic SEO stack - context over prompts
schlessera
0
950
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]