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
120
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
330
Django Through The Years
andrewgodwin
0
230
Writing Maintainable Software At Scale
andrewgodwin
0
460
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
370
Async, Python, and the Future
andrewgodwin
2
690
How To Break Django: With Async
andrewgodwin
1
740
Taking Django's ORM Async
andrewgodwin
0
740
The Long Road To Asynchrony
andrewgodwin
0
680
The Scientist & The Engineer
andrewgodwin
1
790
Other Decks in Programming
See All in Programming
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
0
130
オープンソースソフトウェアへの解像度🔬
utam0k
17
3.2k
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
700
CSC305 Lecture 11
javiergs
PRO
0
310
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.6k
CSC305 Lecture 10
javiergs
PRO
0
320
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
2
1.7k
Migration to Signals, Resource API, and NgRx Signal Store
manfredsteyer
PRO
0
130
Node-REDのノードの開発・活用事例とコミュニティとの関わり(Node-RED Con Nagoya 2025)
404background
0
100
品質ワークショップをやってみた
nealle
0
650
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
34k
Introduce Hono CLI
yusukebe
6
3.2k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Designing Experiences People Love
moore
142
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Gamification - CAS2011
davidbonilla
81
5.5k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
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]