Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Introduction          Paradigms          The Admin Interface   The Django Advantage               Djangoic approach to imp...
Concepts and abstractions used to represent elements of a program
CS is neither about computers nor is science - Abelson, SICP, MIT
Web Development Paradigms: Modeling common web patterns
Introduction   Paradigms    The Admin Interface   The Django Advantage                           Why
Introduction           Paradigms         The Admin Interface   The Django Advantage           • For building database driv...
Introduction           Paradigms         The Admin Interface   The Django Advantage           • For building database driv...
Batteries Included
docs.djangoproject.com
Lets examine the batteries
Introduction             Paradigms         The Admin Interface    The Django Advantage                                    ...
Introduction   Paradigms            The Admin Interface   The Django Advantage                           A nerd, for a while
consulting since, until recently
Always been developing
Work at InMobi now
Introduction        Paradigms       The Admin Interface   The Django Advantage       Introduction           Definition     ...
Software span a spectrum
Those that interact with hardware
The nuts and bolts
Those that solve a human problem ...
... that are Complex Systems
Frameworks come in between ...
... to achieve balance ...
... and reduce cost of maintainance and development
Common Frameworks
Forms
Save form data to a table
Introduction            Paradigms            The Admin Interface         The Django Advantage                             ...
Introduction   Paradigms           The Admin Interface   The Django Advantage                           Save Foreign Keys
Introduction                           Paradigms                              The Admin Interface     The Django Advantage...
Introduction              Paradigms            The Admin Interface          The Django Advantage                          ...
Introduction   Paradigms       The Admin Interface   The Django Advantage                       Form pre populated
Introduction               Paradigms                 The Admin Interface               The Django Advantage               ...
Form Preview
Introduction                Paradigms                The Admin Interface               The Django Advantage               ...
Form Wizard
Introduction          Paradigms          The Admin Interface       The Django Advantage                                  F...
Introduction              Paradigms               The Admin Interface            The Django Advantage                     ...
Introduction                Paradigms                  The Admin Interface                The Django Advantage            ...
Introduction               Paradigms                 The Admin Interface              The Django Advantage                ...
Introduction               Paradigms               The Admin Interface            The Django Advantage                    ...
django-socialauth
Introduction                          Paradigms                             The Admin Interface                           ...
”Normalized data is for sissies” - Cal Henderson
Introduction        Paradigms     The Admin Interface   The Django Advantage           Different blocks need different cachi...
Introduction            Paradigms            The Admin Interface         The Django Advantage                     Generall...
Introduction              Paradigms              The Admin Interface            The Django Advantage                      ...
Introduction                Paradigms               The Admin Interface              The Django Advantage                 ...
Introduction            Paradigms        The Admin Interface   The Django Advantage                           Different cac...
Introduction              Paradigms              The Admin Interface          The Django Advantage                        ...
Introduction              Paradigms              The Admin Interface         The Django Advantage                         ...
Introduction              Paradigms               The Admin Interface   The Django Advantage                              ...
Introduction                Paradigms                 The Admin Interface                 The Django Advantage            ...
Introduction                            Paradigms                               The Admin Interface                       ...
Introduction                     Paradigms                       The Admin Interface                         The Django Ad...
Introduction           Paradigms        The Admin Interface   The Django Advantage                            Types of Gen...
Introduction               Paradigms             The Admin Interface             The Django Advantage                     ...
Introduction             Paradigms             The Admin Interface   The Django Advantage                 Abstract the pag...
DataGrid enables user customisable column and sorting
Introduction           Paradigms          The Admin Interface   The Django Advantage                         Other common ...
Introduction   Paradigms      The Admin Interface   The Django Advantage                    Admin by models alone
Introduction             Paradigms               The Admin Interface      The Django Advantage                            ...
List Page
Add an Entry
Auto Validation
Introduction       Paradigms    The Admin Interface   The Django Advantage          Databrowse enables browsable web compl...
Introduction          Paradigms         The Admin Interface   The Django Advantage                                  Popula...
Introduction           Paradigms         The Admin Interface       The Django Advantage                                   ...
Django users
Introduction             Paradigms          The Admin Interface      The Django Advantage                                 ...
700 contibutors
More open source projects than you think ...
... one for every size and style
Don’t go where the puck is; go where the puck is going to be
Introduction                           Paradigms                              The Admin Interface                         ...
hello@lakshmanprasad.com
djangoic approach to implement common web development paradigms
djangoic approach to implement common web development paradigms
Upcoming SlideShare
Loading in …5
×

djangoic approach to implement common web development paradigms

11,033 views

Published on

Web development frameworks conceptualize various abstractions to make common web development paradigms easy to implement. These abstractions have to be "transparent" in that they enable developer to override where necessary. Django, a modern python framework provides a full stack framework and has pioneered best practices in defining these abstractions for various web application paradigms such as Authentication, Permissions, Sessions, Caching, Security from CSRF, File Storage, Form Validation, etc. The abstractions provided by django are transparent and extensible and are as such referred to in the community to be "Djangoic"

The session covers these abstractions, their defaults and using some of their transparencies to achieve a few non-default common ends such as using cloud storage services like Amazon web services, Implementing LDAP authentication, Implementing caching using Memcached, database and NoSQL data stores. The biggest take away to the developer is the ability to identify and create other Djangoic solutions that are transparent abstractions by examining the ones implemented within django and developed by the community in open source applications.

Published in: Technology
  • Be the first to comment

djangoic approach to implement common web development paradigms

  1. 1. Introduction Paradigms The Admin Interface The Django Advantage Djangoic approach to implement common web development paradigms Lakshman Prasad April 20, 2011
  2. 2. Concepts and abstractions used to represent elements of a program
  3. 3. CS is neither about computers nor is science - Abelson, SICP, MIT
  4. 4. Web Development Paradigms: Modeling common web patterns
  5. 5. Introduction Paradigms The Admin Interface The Django Advantage Why
  6. 6. Introduction Paradigms The Admin Interface The Django Advantage • For building database driven web applications
  7. 7. Introduction Paradigms The Admin Interface The Django Advantage • For building database driven web applications • Emphasis on Reuse, DRY and simplicity
  8. 8. Batteries Included
  9. 9. docs.djangoproject.com
  10. 10. Lets examine the batteries
  11. 11. Introduction Paradigms The Admin Interface The Django Advantage About Me • Active Djangonaut and active in Python world • Part of a few popular open source django applications github.com/becomingGuru. • Co-Authored an ebook ”django-design-patterns” • Architect and develop django applications at InMobi • Earlier, Consulting and Development via Agiliq Solutions • Developed several custom proprietory django applications • twitter.com/becomingGuru http://becomingguru.com
  12. 12. Introduction Paradigms The Admin Interface The Django Advantage A nerd, for a while
  13. 13. consulting since, until recently
  14. 14. Always been developing
  15. 15. Work at InMobi now
  16. 16. Introduction Paradigms The Admin Interface The Django Advantage Introduction Definition About Me Abstractions Paradigms Forms Authentication/Caching/Sessions Inernational/Human/Local ..ization Generic Views Sorting/Pagination/DataBrowse/GRID/Messages/Other The Admin Interface Admin Databrowse The Django Advantage Users Community Endnotes
  17. 17. Software span a spectrum
  18. 18. Those that interact with hardware
  19. 19. The nuts and bolts
  20. 20. Those that solve a human problem ...
  21. 21. ... that are Complex Systems
  22. 22. Frameworks come in between ...
  23. 23. ... to achieve balance ...
  24. 24. ... and reduce cost of maintainance and development
  25. 25. Common Frameworks
  26. 26. Forms
  27. 27. Save form data to a table
  28. 28. Introduction Paradigms The Admin Interface The Django Advantage Use a Model Form >>> from d j a n g o . f o r m s import ModelForm # C r e a t e t h e form c l a s s . >>> c l a s s A r t i c l e F o r m ( ModelForm ) : ... c l a s s Meta : ... model = A r t i c l e # C r e a t i n g a form t o add an a r t i c l e . >>> form = A r t i c l e F o r m ( ) # C r e a t i n g a form t o c h an ge an e x i s t i n g a r t i c l e . >>> a r t i c l e = A r t i c l e . o b j e c t s . g e t ( pk=1) >>> form = A r t i c l e F o r m ( i n s t a n c e= a r t i c l e )
  29. 29. Introduction Paradigms The Admin Interface The Django Advantage Save Foreign Keys
  30. 30. Introduction Paradigms The Admin Interface The Django Advantage Use Model Formset from d j a n g o . f o r m s . m o d e l s i m p o r t m o d e l f o r m s e t f a c t o r y AuthorFormSet = m o d e l f o r m s e t f a c t o r y ( Author ) f o r m s e t = A ut h o r F o r m Se t ( ) > > print formset > <i n p u t t y p e=” h i d d e n ” name=” form− TOTAL FORMS” v a l u e=” 1 ” i d=” i d f o r m − TOTAL FORMS” /> <i n p u t t y p e=” h i d d e n ” name=” form−INITIAL FORMS” v a l u e=” 0 ” i d=” i d f o r m −INITIAL FORMS” /> <i n p u t t y p e=” h i d d e n ” name=” form− MAX NUM FORMS” i d=” i d f o r m −MAX NUM FORMS” /> <t r > <th> <l a b e l f o r=” i d f o r m −0 −name”>Name:</ l a b e l > </th> <td> <i n p u t i d=” i d f o r m −0 −name” t y p e=” t e x t ” name=” form−0 −name” m a x l e n g t h=” 100 ” /> </td> </t r >
  31. 31. Introduction Paradigms The Admin Interface The Django Advantage Model Formset options f o r m s e t = AuthorFormSet ( q s=Au th o r . o b j e c t s . a l l ( ) , e x t r a =5) formset . i s v a l i d () formset . e r r o r s { ’ name ’ : ’ T h i s f i e l d is required ’} formset . changed forms formset . save ()
  32. 32. Introduction Paradigms The Admin Interface The Django Advantage Form pre populated
  33. 33. Introduction Paradigms The Admin Interface The Django Advantage Forms dont have to save to a Model from d j a n g o import f o r m s c l a s s ContactForm ( f o r m s . Form ) : s u b j e c t = f o r m s . C h a r F i e l d ( m a x l e n g t h =100) message = f o r m s . C h a r F i e l d ( ) sender = forms . E m a i l F i e l d () c c m y s e l f = f o r m s . B o o l e a n F i e l d ( r e q u i r e d=F a l s e ) def s a v e ( s e l f ) : #Do a n y t h i n g ...
  34. 34. Form Preview
  35. 35. Introduction Paradigms The Admin Interface The Django Advantage Form Preview from d j a n g o . c o n t r i b . f o r m t o o l s . p r e v i e w import FormPreview from myapp . m o d e l s import SomeModel #Add a u r l ( r ’ ˆ p o s t / $ ’ , SomeModelFormPreview ( SomeModelForm ) ) , #D e f i n e form p r e v i e w c l a s s SomeModelFormPreview ( FormPreview ) : def done ( s e l f , r e q u e s t , c l e a n e d d a t a ) : # Do s o m e t h i n g w i t h t h e c l e a n e d d a t a , t h e n # r e d i r e c t t o a ” s u c c e s s ” page . r e t u r n H t t p R e s p o n s e R e d i r e c t ( ’ / form / s u c c e s s ’ )
  36. 36. Form Wizard
  37. 37. Introduction Paradigms The Admin Interface The Django Advantage Form Wizard c l a s s C o n t a c t W i z a r d ( FormWizard ) : def done ( s e l f , r e q u e s t , f o r m l i s t ) : do something with the form data ( fo r m l is t ) return HttpResponseRedirect ( ’ / r e d i r e c t / ’ )
  38. 38. Introduction Paradigms The Admin Interface The Django Advantage CSRF Protection <form a c t i o n=” ” method=” p o s t ”>{% c s r f t o k e n %} from d j a n g o . v i e w s . d e c o r a t o r s . c s r f import c s r f p r o t e c t from d j a n g o . t e m p l a t e import R e q u e s t C o n t e x t @csrf protect def my view ( r e q u e s t ) : c = {} # ... r e t u r n r e n d e r t o r e s p o n s e ( ” a t e m p l a t e . html ” , c , c o n t e x t i n s t a n c e= RequestContext ( request ))
  39. 39. Introduction Paradigms The Admin Interface The Django Advantage Authentication: Point to url pattern u r l p a t t e r n s += p a t t e r n s ( ’ d j a n g o . c o n t r i b . a u t h . v i e w s ’ , u r l ( r ’ ˆ l o g i n /$ ’ , ’ l o g i n ’ ) , u r l ( r ’ ˆ l o g o u t /$ ’ , ’ l o g o u t ’ ) , u r l ( r ’ ˆ r e g i s t e r /$ ’ , ’ r e g i s t e r ’ ) , u r l ( r ’ ˆ p a s s r e s e t /$ ’ , ’ p a s s w o r d r e s e t ’ ) , u r l ( r ’ ˆ p a s s r e s e t 2 /$ ’ , ’ p a s s w o r d r e s e t d o n e ’ ) , u r l ( r ’ ˆ p a s s r e s e t c o n f i r m / ( ?P<u i d b 3 6 >[−w]+)/ ’ , ’ password reset confirm ’ ) , u r l ( r ’ ˆ p a s s r e s e t c o m p l e t e /$ ’ , ’ password reset complete ’ ) , )
  40. 40. Introduction Paradigms The Admin Interface The Django Advantage Login Required from d j a n g o . c o n t r i b . a u t h . d e c o r a t o r s import login required @ l o g i n r e q u i r e d ( r e d i r e c t f i e l d n a m e= ’ r e d i r e c t t o ’ ) def my view ( r e q u e s t ) : ...
  41. 41. Introduction Paradigms The Admin Interface The Django Advantage Authentication backends class SettingsBackend : ””” A u t h e n t i c a t e a g a i n s t t h e s e t t i n g s ADMIN LOGIN and ADMIN PASSWORD . ””” def a u t h e n t i c a t e ( s e l f , username=None , p a s s w o r d=None ) i f l o g i n v a l i d and p w d v a l i d : return user r e t u r n None def g e t u s e r ( s e l f , u s e r i d ) : try : r e t u r n U s e r . o b j e c t s . g e t ( pk=u s e r i d ) except U s e r . D o e s N o t E x i s t : r e t u r n None
  42. 42. django-socialauth
  43. 43. Introduction Paradigms The Admin Interface The Django Advantage Open ID backend c l a s s OpenIdBackend : d e f a u t h e n t i c a t e ( s e l f , o p e n i d k e y , r e q u e s t , p r o v i d e r , u s e r=None ) : try : a s s o c = U s e r A s s o c i a t i o n . o b j e c t s . g e t ( o p e n i d k e y=o p e n i d k e y ) return assoc . user except U s e r A s s o c i a t i o n . DoesNotExist : #f e t c h i f o p e n i d p r o v i d e r p r o v i d e s any s i m p l e r e g i s t r a t i o n f i e l d s i f r e q u e s t . o p e n i d and r e q u e s t . o p e n i d . s r e g : email = request . openid . sreg . get ( ’ email ’ ) nickname = r e q u e s t . openid . s r e g . get ( ’ nickname ’ ) firstname , lastname = ( request . openid . sreg . get ( ’ fullname ’ , ’ ’ ) return user d e f GooglesAX ( s e l f , o p e n i d r e s p o n s e ) : e m a i l = ( o p e n i d r e s p o n s e . ax . g e t S i n g l e ( ’ h t t p : / / axschema . o r g / c o n t a c t / e m a i l ’ ) ) f i r s t n a m e = ( o p e n i d r e s p o n s e . ax . g e t S i n g l e ( ’ h t t p : / / axschema . o r g / namePerson / f i r s t ’ ) ) l a s t n a m e = ( o p e n i d r e s p o n s e . ax . g e t S i n g l e ( ’ h t t p : / / axschema . o r g / namePerson / l a s t ’ ) ) return l o c a l s () def g e t u s e r ( s e l f , u s e r i d ) : try : u s e r = U s e r . o b j e c t s . g e t ( pk=u s e r i d ) return user except User . DoesNotExist : r e t u r n None
  44. 44. ”Normalized data is for sissies” - Cal Henderson
  45. 45. Introduction Paradigms The Admin Interface The Django Advantage Different blocks need different caching durations
  46. 46. Introduction Paradigms The Admin Interface The Django Advantage Generally Memcache Every page CACHE BACKEND = ’ memcached : / / 1 2 7 . 0 . 0 . 1 : 1 1 2 1 1 / ’ CACHE BACKEND = ’ memcached : / / 1 7 2 . 1 9 . 2 6 . 2 4 0 : 1 1 2 1 1 ; 172.19.26.242:11212;172.19.26.244:11213/ ’
  47. 47. Introduction Paradigms The Admin Interface The Django Advantage Implement a caching decorator from d j a n g o . c o r e . c a c h e import c a c h e def c a c h e f o r ( s e c o n d s , f e t c h =0): def c a c h e i t ( f u n c ) : def d e c o f u n c ( s e l f ) : v a l = cache . get ( s e l f . g e t c a c h e k e y ( f e t c h )) i f not v a l : val = func ( s e l f ) cache . s e t ( s e l f . g e t c a c h e k e y ( f e t c h ) , val , seconds ) return v a l return deco func return c a c h e i t
  48. 48. Introduction Paradigms The Admin Interface The Django Advantage Apply on the blocks class TwitterBlock ( TwitterSearchBlock ) : t e m p l a t e n a m e = ’ t w i t t e r u s e r b l o c k . html ’ a j a x t e m p l a t e = ’ t w e e t s u s e r . html ’ @ c a c h e f o r ( 6 0 ∗ 6 0 , f e t c h =1) def f e t c h d a t a ( s e l f ) : tw = T w i t t e r ( e m a i l= ’ umoja com ’ ) u s e r t w e e t s = tw . s t a t u s e s . u s e r t i m e l i n e ( s c r e e n n a m e= s e l f . d a t a ) r e t u r n u s e r t w e e t s , None
  49. 49. Introduction Paradigms The Admin Interface The Django Advantage Different cache Backends • Database • File System • Local Memory • Redis, a NoSQL store • Dummy- For Development • Sessions can use any of these, or the database.
  50. 50. Introduction Paradigms The Admin Interface The Django Advantage Humanization and Localization 19 Apr 2 0 1 0 | n a t u r a l d a y becomes ‘ y e s t e r d a y ‘ . 20 Apr 2 0 1 0 | n a t u r a l d a y becomes ‘ today ‘ . 1 | o r d i n a l becomes ‘ 1 s t ‘ . 2 | o r d i n a l becomes ‘ 2 nd ‘ . 1 0 0 0 0 0 0 | i n t w o r d becomes ‘ 1 . 0 m i l l i o n ‘ . 1 2 0 0 0 0 0 | i n t w o r d becomes ‘ 1 . 2 m i l l i o n ‘ . {{ v a l u e | l o c a l i z e }}
  51. 51. Introduction Paradigms The Admin Interface The Django Advantage Internationalization {% b l o c k t r a n s w i t h amount= a r t i c l e . p r i c e %} That w i l l c o s t $ {{ amount } } . {% e n d b l o c k t r a n s %} {% b l o c k t r a n s w i t h myvar=v a l u e | f i l t e r %} T h i s w i l l ha ve {{ myvar }} i n s i d e . {% e n d b l o c k t r a n s %} c l a s s in . forms . I N S t a t e F i e l d c l a s s in . forms . INZipCodeField c l a s s in . forms . I N S t a t e S e l e c t
  52. 52. Introduction Paradigms The Admin Interface The Django Advantage Using Generic Views # some app / v i e w s . py from d j a n g o . v i e w s . g e n e r i c import TemplateView c l a s s AboutView ( TemplateView ) : t e m p l a t e n a m e = ” a b o u t . html ” # u r l s . py from d j a n g o . c o n f . u r l s . d e f a u l t s import ∗ from some app . v i e w s import AboutView urlpatterns = patterns ( ’ ’ , ( r ’ ˆ a b o u t / ’ , AboutView . a s v i e w ( ) ) , )
  53. 53. Introduction Paradigms The Admin Interface The Django Advantage List and Object Views from d j a n g o . v i e w s . g e n e r i c import L i s t V i e w from b o o k s . m o d e l s import Book c l a s s AcmeBookListView ( L i s t V i e w ) : context object name = ” book list ” q u e r y s e t = Book . o b j e c t s . f i l t e r ( p u b l i s h e r n a m e= ”Acme P u b l i s h i n g ” ) t e m p l a t e n a m e = ” b o o k s / a c m e l i s t . html ”
  54. 54. Introduction Paradigms The Admin Interface The Django Advantage Mixins from d j a n g o i m p o r t h t t p from d j a n g o . u t i l s i m p o r t s i m p l e j s o n a s j s o n c l a s s JSONResponseMixin ( o b j e c t ) : def r e n d e r t o r e s p o n s e ( s e l f , context ) : ” R e t u r n s a JSON r e s p o n s e c o n t a i n i n g ’ c o n t e x t ’ a s p a y l o a d ” return s e l f . get json response ( s e l f . convert context to json ( context )) d e f g e t j s o n r e s p o n s e ( s e l f , c o n t e n t , ∗∗ h t t p r e s p o n s e k w a r g s ) : ” C o n s t r u c t an ‘ H t t p R e s p o n s e ‘ o b j e c t . ” return http . HttpResponse ( content , c o n t e n t t y p e= ’ a p p l i c a t i o n / j s o n ’ , ∗∗ h t t p r e s p o n s e k w a r g s ) def c o n v e r t c o n t e x t t o j s o n ( s e l f , context ) : ” C o n v e r t t h e c o n t e x t d i c t i o n a r y i n t o a JSON o b j e c t ” r e t u r n j s o n . dumps ( c o n t e x t )
  55. 55. Introduction Paradigms The Admin Interface The Django Advantage Any combinations of Mixins c l a s s H y b r i d D e t a i l V i e w ( JSONResponseMixin , SingleObjectTemplateResponseMixin , BaseDetailView ) : def r e n d e r t o r e s p o n s e ( s e l f , context ) : # Look f o r a ’ f o r m a t=j s o n ’ GET argument i f s e l f . r e q u e s t . GET . g e t ( ’ f o r m a t ’ , ’ h t m l ’ ) == ’ j s o n ’ : r e t u r n JSONResponseMixin . r e n d e r t o r e s p o n s e ( s e l f , c o n t e x t ) else : return SingleObjectTemplateResponseMixin . render to response ( s e l f , context )
  56. 56. Introduction Paradigms The Admin Interface The Django Advantage Types of Generic Views • Simple: Redirect, Render to Template • Detail, List View • Archive View: Date, Month, Year views • Basic CRUD, with or w/o Auth
  57. 57. Introduction Paradigms The Admin Interface The Django Advantage Builtin support for Pagination >>> from d j a n g o . c o r e . p a g i n a t o r import P a g i n a t o r >>> o b j e c t s = [ ’ j o h n ’ , ’ p a u l ’ , ’ g e o r g e ’ , ’ r i n g o ’ ] >>> p = P a g i n a t o r ( o b j e c t s , 2 ) >>> p . count 4 >>> p . num pages 2 >>> p . page range [1 , 2] >>> page1 = p . page ( 1 ) >>> page1 <Page 1 o f 2> >>> page1 . o b j e c t l i s t [ ’ john ’ , ’ paul ’ ]
  58. 58. Introduction Paradigms The Admin Interface The Django Advantage Abstract the pagination in middleware django pagenation {% a u t o p a g i n a t e o b j e c t l i s t 10 %} {% p a g i n a t e %}
  59. 59. DataGrid enables user customisable column and sorting
  60. 60. Introduction Paradigms The Admin Interface The Django Advantage Other common paradigms • Display Image Thumbnail • Store data on a CDN, like Amazon S3 • Periodic tasks with Celery • Decoupled design using Signals • GeoDjango : Framework for all location based applications
  61. 61. Introduction Paradigms The Admin Interface The Django Advantage Admin by models alone
  62. 62. Introduction Paradigms The Admin Interface The Django Advantage Admin Syntax from d j a n g o . c o n t r i b import admin from m o d e l s import Post , Comment c l a s s PostAdmin ( admin . ModelAdmin ) : l i s t d i s p l a y = ( ’ t i t l e ’ , ’ datetime ’ ) c l a s s CommentAdmin ( admin . ModelAdmin ) : l i s t d i s p l a y = ( ’ text ’ ,) admin . s i t e . r e g i s t e r ( Post , PostAdmin ) admin . s i t e . r e g i s t e r ( Comment , CommentAdmin )
  63. 63. List Page
  64. 64. Add an Entry
  65. 65. Auto Validation
  66. 66. Introduction Paradigms The Admin Interface The Django Advantage Databrowse enables browsable web complete with hyperlinks
  67. 67. Introduction Paradigms The Admin Interface The Django Advantage Popular Users • Media • LA Times • NY Times • Washington Post • Guardian • Hindustan TImes
  68. 68. Introduction Paradigms The Admin Interface The Django Advantage Popular Users • Media • LA Times • NY Times • Washington Post • Guardian • Hindustan TImes • Web2.0 • Mahalo: 10 million Page views • Many web startups: Convore, Lanyard, Everyblock, GroupQuality,
  69. 69. Django users
  70. 70. Introduction Paradigms The Admin Interface The Django Advantage NASA uses Django After an extensive trade study, we selected Django ... as the first and primary application environment for the Nebula Cloud.
  71. 71. 700 contibutors
  72. 72. More open source projects than you think ...
  73. 73. ... one for every size and style
  74. 74. Don’t go where the puck is; go where the puck is going to be
  75. 75. Introduction Paradigms The Admin Interface The Django Advantage Image Attributions h t t p : / /www . f l i c k r . com/ p h o t o s / t e j e d o r o d e l u z /3157690060/ h t t p : / /www . f l i c k r . com/ p h o t o s /23820645 @N05 /4287681570/ h t t p : / /www . f l i c k r . com/ p h o t o s / a i d a n j o n e s /3575000735/ http :// j a c o b i a n . org / h t t p : / / s a n j u a n c o l l e g e . edu / l i b / i m a g e s / p h i l o s o p h y b r a i n . j p g h t t p : / /www . f l i c k r . com/ p h o t o s / uhop /105062059/ h t t p : / / s 3 . amazonaws . com/memebox/ u p l o a d s /136/ e x p o n e n t i a l g r a p h 2 . j p g h t t p : / / g e e k a n d p o k e . t y p e p a d . com/ g e e k a n d p o k e / i m a g e s /2008/06/03/ s e x p l 1 8 . j p g h t t p : / /www . f l i c k r . com/ p h o t o s / go /253819/ h t t p : / / a r o u n d t h e s p h e r e . f i l e s . w o r d p r e s s . com /2009/05/ s w i s s −army−k n i f e . j p g h t t p : / /www . f r e e f o t o . com/ i m a g e s /41/04/41 0 4 9− −Keep−L e f t w e b . j p g − h t t p : / /www . f l i c k r . com/ p h o t o s / o r i n r o b e r t j o h n /114430223/
  76. 76. hello@lakshmanprasad.com

×