Slide 1

Slide 1 text

Jacob Kaplan-Moss [email protected] The web framework for perfectionists with deadlines.

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Kansas

Slide 8

Slide 8 text

Not as bad as you think

Slide 9

Slide 9 text

Lawrence, Kansas

Slide 10

Slide 10 text

Bookstore

Slide 11

Slide 11 text

Music

Slide 12

Slide 12 text

Free state http://www.flickr.com/photos/34022876@N06/3189863029

Slide 13

Slide 13 text

Basketball

Slide 14

Slide 14 text

LJW

Slide 15

Slide 15 text

Adrian/Simon Adrian Holovaty Simon Willison

Slide 16

Slide 16 text

The Inside of Love The Inside of Love Katlyn Conroy explores the idea of home on her solo album "I Think I'll Stay Inside" Next time you see Katlyn Conroy out and about and having fun, tell her to go home. That’s where she makes her best music, and it’s the reason she came up with a lovely new solo Best bets Distant early warnings Your bets Today's events Search events Bad Veins / Division Day This Cincinnati duo — plus a reel-to-reel tape machine named Irene — perform dense pop and rock compositions with strong beats and lots of bells and whistles... Today at 10:00pm The Replay Lounge, $2 - $3 Most discussed Event Sidewise / Left On Northwood / Viper Room Dance Floor / Harlequin Shade Theory Home Events Latest Music Movies Food Nightlife More Login Search

Slide 17

Slide 17 text

The Inside of Love The Inside of Love Katlyn Conroy explores the idea of home on her solo album "I Think I'll Stay Inside" Next time you see Katlyn Conroy out and about and having fun, tell her to go home. That’s where she makes her best music, and it’s the reason she came up with a lovely new solo Best bets Distant early warnings Your bets Today's events Search events Bad Veins / Division Day This Cincinnati duo — plus a reel-to-reel tape machine named Irene — perform dense pop and rock compositions with strong beats and lots of bells and whistles... Today at 10:00pm The Replay Lounge, $2 - $3 Most discussed Event Sidewise / Left On Northwood / Viper Room Dance Floor / Harlequin Shade Theory Home Events Latest Music Movies Food Nightlife More Login Search

Slide 18

Slide 18 text

All the cool buzzwords

Slide 19

Slide 19 text

MP3 Photo by dan taylor - http://flic.kr/p/6bSmJ

Slide 20

Slide 20 text

RSS Photo by Robert Scoble - http://flic.kr/p/5D1bmt

Slide 21

Slide 21 text

Podcasts Photo by Hryck. - http://flic.kr/p/3k2ujF

Slide 22

Slide 22 text

Pictures of drunk college students

Slide 23

Slide 23 text

“Deadwood” edition

Slide 24

Slide 24 text

“Deadwood” edition

Slide 25

Slide 25 text

“Deadwood” edition

Slide 26

Slide 26 text

“Deadwood” edition

Slide 27

Slide 27 text

“Deadwood” edition

Slide 28

Slide 28 text

“Deadwood” edition

Slide 29

Slide 29 text

“Deadwood” edition

Slide 30

Slide 30 text

“Deadwood” edition

Slide 31

Slide 31 text

PHP

Slide 32

Slide 32 text

http://flickr.com/photos/scragz/134084915/

Slide 33

Slide 33 text

http://flickr.com/photos/dnorman/126129736/

Slide 34

Slide 34 text

abs() acos() acosh() addcslashes() addslashes() aggregate() aggregate_info() aggregate_methods() aggregate_methods_by_list() aggregate_methods_by_regexp() aggregate_properties() aggregate_properties_by_list() aggregate_properties_by_regexp( ) aggregation_info() apache_child_terminate() apache_get_modules() apache_get_version() apache_getenv() apache_lookup_uri() apache_note() apache_request_headers() apache_reset_timeout() apache_response_headers() apache_setenv() apc_add() apc_cache_info() apc_clear_cache() apc_compile_file() apc_define_constants() apc_delete() apc_fetch() apc_load_constants() apc_sma_info() apc_store() apd_breakpoint() apd_callstack() apd_clunk() apd_continue() apd_croak() apd_dump_function_table() apd_dump_persistent_resources() apd_dump_regular_resources() apd_echo() apd_get_active_symbols() apd_set_pprof_trace() apd_set_session() apd_set_session_trace() apd_set_socket_session_trace() array() array_change_key_case() array_chunk() array_combine() array_count_values() array_diff() array_diff_assoc() array_diff_key() array_diff_uassoc() array_diff_ukey() array_fill() array_fill_keys() array_filter() array_flip() array_intersect() array_intersect_assoc() array_intersect_key() array_intersect_uassoc() array_intersect_ukey() array_key_exists() array_keys() array_map() array_merge() array_merge_recursive() array_multisort() array_pad() array_pop() array_product() array_push() array_rand() array_reduce() array_reverse() array_search() array_shift() array_slice() array_splice() array_sum() array_udiff() array_udiff_assoc() array_udiff_uassoc() array_uintersect() array_uintersect_assoc() array_uintersect_uassoc() array_unique() array_unshift() array_values() array_walk() array_walk_recursive() ArrayIterator::current() ArrayIterator::key() ArrayIterator::next() ArrayIterator::rewind() ArrayIterator::seek() ArrayIterator::valid() ArrayObject::__construct() ArrayObject::append() ArrayObject::count() ArrayObject::getIterator() ArrayObject::offsetExists() ArrayObject::offsetGet() ArrayObject::offsetSet() ArrayObject::offsetUnset() arsort() ascii2ebcdic()

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

“The CMS”

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

http://flickr.com/photos/malweth/196526482/

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

http://flickr.com/photos/drift-words/48739695/

Slide 45

Slide 45 text

http://flickr.com/photos/goldberg/107095332/

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

Make web development “stupid fast”

Slide 48

Slide 48 text

Automate repetitive tasks

Slide 49

Slide 49 text

Follow best practices

Slide 50

Slide 50 text

“ ” The ink is never dry on these babies. — Adrian Holovaty

Slide 51

Slide 51 text

IPO: July 2005

Slide 52

Slide 52 text

IPO: July 2005

Slide 53

Slide 53 text

Today Photo by jaxxon - http://flic.kr/p/b5LLop

Slide 54

Slide 54 text

http://www.flickr.com/photos/tejedoro_de_luz/3157690060/ 9 years old, 7 as open source.

Slide 55

Slide 55 text

600+ contributors

Slide 56

Slide 56 text

http://www.flickr.com/photos/aidan_jones/3575000735 Majority of features are community contributed

Slide 57

Slide 57 text

Stable APIs http://www.flickr.com/photos/chris_bell/3164537665/

Slide 58

Slide 58 text

Forward-compatible http://www.flickr.com/photos/tjblackwell/2807009000

Slide 59

Slide 59 text

http://flickr.com/photos/orinrobertjohn/22452221/ What does Django look like?

Slide 60

Slide 60 text

MVC?

Slide 61

Slide 61 text

Photo by Joe Zackry - http://flic.kr/p/6QAwuc

Slide 62

Slide 62 text

Model

Slide 63

Slide 63 text

from django.db import models class Photo(models.Model): image = models.ImageField() title = models.CharField(max_length=150) uploaded = models.DateTimeField()

Slide 64

Slide 64 text

>>> Photo.objects.all() >>> Photo.objects.filter( ... uploaded = datetime.date.today() ... ) >>> Photo.objects.filter( ... title__startswith = "pants", ... uploaded__lte = some_date) ... )

Slide 65

Slide 65 text

from django.contrib import admin from photos.models import Photo admin.site.register(Photo, list_display = ['photo', 'title'], date_hierarchy = 'date_uploaded', )

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

URLs

Slide 71

Slide 71 text

http://flickr.com/photos/rightee/4357183/

Slide 72

Slide 72 text

page.php script.cgi?pageid=144 StoryPage.aspx

Slide 73

Slide 73 text

0,2097,1-1-30-72-407-4752,00.html

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

photos/ photos/ugly-dog/

Slide 76

Slide 76 text

from photos import views urlpatterns = patterns('', url("^photos/$", views.photo_index), url("^photos/(.+)/$", views.photo_detail), )

Slide 77

Slide 77 text

Views

Slide 78

Slide 78 text

from django.http import HttpResponse def view(request): return HttpResponse("Hello, Vegas!")

Slide 79

Slide 79 text

from photos.models import Photo from django.shortcuts import render def photo_index(request): return render(request, 'photos/index.html', {'photo_list' : Photo.objects.all()} )

Slide 80

Slide 80 text

http://flickr.com/photos/ok-59/32955331/ Templates

Slide 81

Slide 81 text

No content

Slide 82

Slide 82 text

{% extends "base" %}

Slide 83

Slide 83 text

{% extends "base" %}

Slide 84

Slide 84 text

{% extends "base" %} {% block content %}

Slide 85

Slide 85 text

{% extends "base" %} {% block content %}

{{ photo.title }}

Slide 86

Slide 86 text

{% extends "base" %} {% block content %}

{{ photo.title }}

Slide 87

Slide 87 text

{% extends "base" %} {% block content %}

{{ photo.title }}

{% endblock %}

Slide 88

Slide 88 text

Who uses Django?

Slide 89

Slide 89 text

No content

Slide 90

Slide 90 text

No content

Slide 91

Slide 91 text

AMD, Canonical, Discovery, Disqus, Google, HP, IBM, Instagram, Intel, Lexis-Nexis, Library of Congress, Mozilla, NASA, National Geographic, the New York Times, Orbitz, PBS, Pinterest, PolitiFact, Rdio, VMWare, Walt Disney, the Washington Post…

Slide 92

Slide 92 text

Why use Django?

Slide 93

Slide 93 text

No content

Slide 94

Slide 94 text

66,000 lines of Python 75,000 lines of English

Slide 95

Slide 95 text

In Search of Lost Time 1,500,000 Infinite Jest 484,000 Django 360,000 New Testament 180,000 Your first manuscript 60,000

Slide 96

Slide 96 text

“ ” — Boston Companies using Django http://j.mp/hnOsVl “The documentation and community are second to none.” “[W]e’ve found that people …can get up-to-speed relatively quickly thanks to the excellent documentation…” “Django … provides an excellent developer experience, with great documentation and tutorials…” “Our initial choice … was based on the strength of the Django community and documentation…” “Productive development, good documentation, flexibility, and it just works.”

Slide 97

Slide 97 text

“There’s an app for that” http://www.flickr.com/photos/joelaz/2868356069

Slide 98

Slide 98 text

“ ” GeoDjango … is undoubtedly the most sophisticated GIS functionality in any web framework in any language or platform. — Ted Leung http://bit.ly/Q91EW

Slide 99

Slide 99 text

“ ” Our technical goals are to never lose data, be very fast, and favor boring and faded technologies where possible. A rule of thumb that has worked well for me is that if I'm excited to play around with something, it probably doesn't belong in production. — Maciej Ceglowski http://blog.pinboard.in/2010/01/technical_underpinnings/

Slide 100

Slide 100 text

No content

Slide 101

Slide 101 text

Join us! http://djangoproject.com/

Slide 102

Slide 102 text

Thank you! Me: Jacob Kaplan-Moss This talk: lanyrd.com/srfzr Contact: [email protected]