SlideShare a Scribd company logo
1 of 78
Download to read offline
Introduction       Using django     Features of django   Reuseable apps   End Notes




               Building Pluggable Web Applications using



                                  Lakshman Prasad

                                    Agiliq Solutions




                                   April 21, 2010
Introduction       Using django     Features of django   Reuseable apps   End Notes




           • For building database driven web applications
Introduction       Using django     Features of django   Reuseable apps   End Notes




           • For building database driven web applications
           • Emphasis on Reuse, DRY and simplicity
Introduction   Using django    Features of django   Reuseable apps   End Notes




                        Hypothetical Application
Introduction       Using django       Features of django   Reuseable apps   End Notes




               Install a pluggable app django-star-rating


       $pip install django-star-rating

       INSTALLED APPS = (
           ’ django . c o n t r i b   . auth ’ ,
           ’ django . c o n t r i b   . contenttypes ’ ,
           ’ django . c o n t r i b   . sessions ’ ,
           ’ django . c o n t r i b   . sites ’ ,
           ’ django . c o n t r i b   . admin ’ ,
           ’ starrating ’ ,
       )
Introduction         Using django        Features of django       Reuseable apps   End Notes




                                Point to an url pattern



       from b l o g . m o d e l s import P o s t

       urlpatterns = patterns ( ’ ’ ,
           ( r ’ ˆ$ ’ , ’ b l o g . v i e w s . i n d e x ’ ) ,
           ( r ’ s t a r i n g /$ ’ , { model : P o s t } ,
           ’ s t a r r a t i n g . views . star ’ ) ,
       )
Introduction      Using django     Features of django   Reuseable apps   End Notes




                    Put the rating where you want!

      <html>
          <head>
              < t i t l e>{{ page . t i t l e }}</ t i t l e>
          <body>
              {% s t a r r a t i n g %}
              <d i v>
                      {{ page . c o n t e n t }}
              </ d i v>
          ...
          </body>
      ...
Introduction   Using django   Features of django   Reuseable apps   End Notes




                              Thats it!
Introduction      Using django   Features of django   Reuseable apps   End Notes




       Introduction
           Definition
           A Case Study: Youtube Stars
           Overview
           Philosophy
       Using django
          MTV
       Features of django
          Features
       Reuseable apps
          Writing reuseable apps
          Community Applications
       End Notes
          Django Stats
          Common Enterprise Hurdles
          Other
Introduction    Using django   Features of django   Reuseable apps   End Notes




               Developed at Lawrence-Journal World
5 million hits per month
600 Contributors
Majority of the features community contributed
5 years since Open Source
Introduction   Using django    Features of django   Reuseable apps   End Notes




                              Philosophy
Automate repetitive tasks
Make Development Fast
Introduction   Using django   Features of django   Reuseable apps   End Notes




                  Convention Over Configuration
Follow Best Practices
Models-Templates-Views
Models
Introduction           Using django          Features of django       Reuseable apps   End Notes




                                         Model Syntax
       from d j a n g o . db import m o d e l s

       c l a s s P o s t ( m o d e l s . Model ) :
               t i t l e = m o d e l s . C h a r F i e l d ( m a x l e n g t h =100)
               t e x t = models . T e x t F i e l d ( )
               datetime = models . DateTimeField ( )

               c l a s s Meta :
                       o r d e r i n g = ( ’−d a t e t i m e ’ , )

               def      unicode ( self ):
                      return s e l f . t i t l e

       c l a s s Comment ( m o d e l s . Model ) :
               post = models . ForeignKey ( Post )
               t e x t = models . T e x t F i e l d ( )
Introduction        Using django         Features of django      Reuseable apps   End Notes




                                       Model API




      >>>from b l o g . m o d e l s import Post , Comment
      >>>p o s t = P o s t . o b j e c t s . a l l ( ) [ 0 ]
      >>>p o s t c o m m e n t s = p o s t . c om m en t s et . a l l ( )
Introduction   Using django     Features of django   Reuseable apps   End Notes




                          Admin by models alone
Introduction         Using django         Features of django      Reuseable apps   End Notes




                                     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 )
List Page
Add an Entry
Auto Validation
Introduction          Using django          Features of django        Reuseable apps   End Notes




                                            Ugly urls



       h t t p : / / a r t . com/ a r t g a l l e r y / d e f a u l t . a s p ?
       s i d =9DF4BC0580DF11D3ACB60090271E26A8
       &command= f r e e l i s t

       h t t p : / / p r e v i e w . y n o t . com/ c g i b i n /
       n d C G I 5 0 . c g i / Y n o t P h o e n i x / CFsMain .
Introduction        Using django        Features of django      Reuseable apps       End Notes




                                       Good urls




       h t t p : / /www. w i r e d . com/ a p p l e / MacbookPro /

       h t t p : / / devmarch . com/ d e v e l o p e r s u m m i t / s p e a k e r s . html
Introduction         Using django        Features of django       Reuseable apps   End Notes




                                    django url pattern



       from b l o g . m o d e l s import P o s t

       urlpatterns = patterns ( ’ ’ ,
           ( r ’ ˆ$ ’ , ’ b l o g . v i e w s . i n d e x ’ ) ,
           ( r ’ s t a r i n g /$ ’ , { model : P o s t } ,
           ’ s t a r r a t i n g . views . star ’ ) ,
       )
Views
Introduction         Using django         Features of django       Reuseable apps   End Notes




                                       django views




       from d j a n g o . h t t p import H t t p R e s p o n s e

       def p o s t ( r e q u e s t ) :
           r e t u r n H t t p R e s p o n s e ( ’ H e l l o World ! ’ )
Introduction         Using django         Features of django       Reuseable apps         End Notes




                                       django views

       def p o s t ( r e q u e s t , p o s t i d ) :
           p o s t = P o s t . o b j e c t s . g e t ( pk=p o s t i d )
           i f r e q . method == ’POST ’ :
                   comment form = CommentForm ( r e q u e s t . POST)
                   comment = comment form . s a v e ( )
           payload = { ’ post ’ : post ,
                                  ’ comments ’ :
                                 Comment . o b j e c t s . f i l t e r ( p o s t i d=p o s t i d ) ,
                                  ’ comment form ’ : CommentForm ( ) }
           r e t u r n r e n d e r t o r e s p o n s e ( ’ p o s t . html ’ ,
                                                         payload ,
                                                         RequestContext ( req ))
Templates
Introduction        Using django       Features of django     Reuseable apps   End Notes




                                   django template


       {% e x t e n d s ” b a s e . html ” %}
       {% b l o c k body %}
           {% i f u s e r . i s a u t h e n t i c a t e d %}
                    Welcome {{ u s e r . g e t f u l l n a m e }}
           {% e l s e %}
                   {% i n c l u d e ” l o g i n . html ” %}
           {% e n d i f %}

        ...

       {% e n d b l o c k %}
Features
Introduction       Using django   Features of django   Reuseable apps   End Notes




           • Admin Interface
Introduction       Using django   Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
Introduction       Using django   Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
Introduction       Using django   Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
           • Sessions
Introduction       Using django   Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
           • Sessions
           • Authentication
Introduction       Using django   Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
           • Sessions
           • Authentication
           • Caching
Introduction        Using django    Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
           • Sessions
           • Authentication
           • Caching
           • Internationalization
Introduction        Using django    Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
           • Sessions
           • Authentication
           • Caching
           • Internationalization
           • RSS
Introduction        Using django    Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
           • Sessions
           • Authentication
           • Caching
           • Internationalization
           • RSS
           • CSRF protection
Introduction        Using django    Features of django   Reuseable apps   End Notes




           • Admin Interface
           • Generic Views
           • Testing Tools
           • Sessions
           • Authentication
           • Caching
           • Internationalization
           • RSS
           • CSRF protection
           • File Storage
Django Documentation
Introduction         Using django   Features of django   Reuseable apps   End Notes




               General conventions adopted by the community
Introduction        Using django        Features of django      Reuseable apps        End Notes




                                   Use template tags



      <p>The t i m e i s {% c u r r e n t t i m e ”%I :%M %p” %}.</p>

       from d j a n g o import t e m p l a t e
       def d o c u r r e n t t i m e ( p a r s e r , t o k e n ) :
           tag name , f o r m a t s t r i n g = t o k e n . s p l i t c o n t e n t s ( )
           r e t u r n CurrentTimeNode ( f o r m a t s t r i n g [ 1 : − 1 ] )
Introduction          Using django         Features of django       Reuseable apps         End Notes




                                         Use Signals

       from d j a n g o . c o r e . s i g n a l s import r e q u e s t f i n i s h e d

       r e q u e s t f i n i s h e d . connect ( my callback )


       from d j a n g o . db . m o d e l s . s i g n a l s import p r e s a v e
       from myapp . m o d e l s import MyModel

       def m y h a n d l e r ( s e n d e r , ∗∗ k w a r g s ) :
           ...

               p r e s a v e . c o n n e c t ( m y h a n d l e r , s e n d e r=MyModel )
Introduction      Using django   Features of django   Reuseable apps   End Notes




                                   Basics



           • Take template_name and extra_context every where
Introduction        Using django     Features of django   Reuseable apps   End Notes




                                       Basics



           • Take template_name and extra_context every where
           • Write urls in applications
Introduction        Using django     Features of django   Reuseable apps   End Notes




                                       Basics



           • Take template_name and extra_context every where
           • Write urls in applications
           • Import from the application level
Introduction        Using django     Features of django   Reuseable apps   End Notes




                                       Basics



           • Take template_name and extra_context every where
           • Write urls in applications
           • Import from the application level
           • Prefix template name with directory
Introduction        Using django     Features of django   Reuseable apps   End Notes




                                       Basics



           • Take template_name and extra_context every where
           • Write urls in applications
           • Import from the application level
           • Prefix template name with directory
           • Use MEDIA_URL in templates
Introduction        Using django     Features of django   Reuseable apps   End Notes




                                       Basics



           • Take template_name and extra_context every where
           • Write urls in applications
           • Import from the application level
           • Prefix template name with directory
           • Use MEDIA_URL in templates
           • Reverse url patterns
Introduction          Using django           Features of django         Reuseable apps           End Notes




                                     Basics Done right

       def r e g i s t e r ( r e q u e s t , backend , s u c c e s s u r l=None ,
                             f o r m c l a s s=None ,
                             d i s a l l o w e d u r l=
                             ’ registration disallowed ’ ,
                             t e m p l a t e n a m e=
                             ’ r e g i s t r a t i o n / r e g i s t r a t i o n f o r m . html ’ ,
                             e x t r a c o n t e x t=None ) :


                               ...

         return r e n d e r t o r e s p o n s e ( template name ,
                                                  { ’ form ’ : form } ,
                                                  context )
Introduction       Using django   Features of django   Reuseable apps   End Notes




                                  Advanced




           • Use Template Response
Introduction       Using django       Features of django   Reuseable apps   End Notes




                                  Advanced




           • Use Template Response
           • Write Views as Classes
There is an app for that
For every size and style
Introduction   Using django     Features of django   Reuseable apps   End Notes




                         Github Search ”django”
Introduction   Using django   Features of django   Reuseable apps   End Notes
Introduction          Using django     Features of django   Reuseable apps   End Notes




                                     Pinax Features
           •   openid support
           •   email verification
           •   password management
           •   site announcements
           •   a notification framework
           •   user-to-user messaging
           •   friend invitation (both internal and external to the site)
           •   a basic twitter clone
           •   oembed support
           •   gravatar support
           •   interest groups (called tribes)
           •   projects with basic task and issue management
           •   threaded discussions
           •   wikis with multiple markup support
           •   blogging
           •   bookmarks
Introduction   Using django     Features of django          Reuseable apps    End Notes




                              django-mingus

      django extensions                       view cache utils
      basic                                   contact form
      flatblocks                              honeypot
      disqus                                  sugar
      navbar                                  quoteme
      djangodblog                             django− s t a t i c f i l e s
      sorl                                    django−b i t l y
      oembded                                 d j a n g o −t w i t t e r
      template utils                          python−t w i t t e r
      django proxy                            d j a n g o −wysiwyg
      compressor                              d j a n g o −s l i m m e r
      django markup                           d j a n g o −c r o p p e r
      google analytics                        d j a n g o −r e q u e s t
Django users
Introduction       Using django     Features of django   Reuseable apps   End Notes




                                  Popular Users


           • Media
              • LA Times
              • NY Times
              • Washington Post
              • Guardian
Introduction       Using django     Features of django   Reuseable apps   End Notes




                                  Popular Users


           • Media
              • LA Times
              • NY Times
              • Washington Post
              • Guardian
           • Web2.0
              • Mahalo: 10 million Page views
              • Pownce, SixApart
Introduction        Using django     Features of django   Reuseable apps   End Notes




                                   Popular Users


           • Media
              • LA Times
              • NY Times
              • Washington Post
              • Guardian
           • Web2.0
              • Mahalo: 10 million Page views
              • Pownce, SixApart
           • Full List: djangosites.com
Introduction         Using django     Features of django   Reuseable apps   End Notes




                                        NASA




                   After an extensive trade study, we selected Django ...
               as the first and primary application environment for the
               Nebula Cloud.
Introduction       Using django   Features of django   Reuseable apps   End Notes




                         Enterprise Adoption Hurdles




           • Multiple Databases
Introduction       Using django     Features of django   Reuseable apps   End Notes




                         Enterprise Adoption Hurdles




           • Multiple Databases
           • Dynamic settings infrastructure
Introduction         Using django   Features of django   Reuseable apps   End Notes




                           Enterprise Adoption Hurdles




           • Multiple Databases
           • Dynamic settings infrastructure
           • Tools
Introduction         Using django    Features of django   Reuseable apps   End Notes




                                    About Me
           •   lakshman@agiliqsolutions.com, @becomingGuru
           •   lakshmanprasad.com
           •   Agiliq Solutions Formerly, Usware Technologies @agiliq
           •   Team of Expert Django Developers, Happy Clients
http://www.agiliqsolutions.com/
Introduction                   Using django                        Features of django                        Reuseable apps                End Notes




                                                     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/
?

More Related Content

What's hot

Angular js routing options
Angular js routing optionsAngular js routing options
Angular js routing optionsNir Kaufman
 
GT.M: A Tried and Tested Open-Source NoSQL Database
GT.M: A Tried and Tested Open-Source NoSQL DatabaseGT.M: A Tried and Tested Open-Source NoSQL Database
GT.M: A Tried and Tested Open-Source NoSQL DatabaseRob Tweed
 
Servlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use CasesServlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use CasesVMware Tanzu
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC
 
Web develop in flask
Web develop in flaskWeb develop in flask
Web develop in flaskJim Yeh
 
Project Reactor Now and Tomorrow
Project Reactor Now and TomorrowProject Reactor Now and Tomorrow
Project Reactor Now and TomorrowVMware Tanzu
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Kim Hunmin
 
Redux Toolkit - Quick Intro - 2022
Redux Toolkit - Quick Intro - 2022Redux Toolkit - Quick Intro - 2022
Redux Toolkit - Quick Intro - 2022Fabio Biondi
 
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...ScaleGrid.io
 
liftIO 2022 quasiquote
liftIO 2022 quasiquoteliftIO 2022 quasiquote
liftIO 2022 quasiquoteHyunseok Cho
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileLilia Sfaxi
 

What's hot (20)

Angular js routing options
Angular js routing optionsAngular js routing options
Angular js routing options
 
GT.M: A Tried and Tested Open-Source NoSQL Database
GT.M: A Tried and Tested Open-Source NoSQL DatabaseGT.M: A Tried and Tested Open-Source NoSQL Database
GT.M: A Tried and Tested Open-Source NoSQL Database
 
Servlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use CasesServlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use Cases
 
Spring Batch - concepts de base
Spring Batch - concepts de baseSpring Batch - concepts de base
Spring Batch - concepts de base
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Web develop in flask
Web develop in flaskWeb develop in flask
Web develop in flask
 
Testing Spring Applications
Testing Spring ApplicationsTesting Spring Applications
Testing Spring Applications
 
Project Reactor Now and Tomorrow
Project Reactor Now and TomorrowProject Reactor Now and Tomorrow
Project Reactor Now and Tomorrow
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
OSGi Blueprint Services
OSGi Blueprint ServicesOSGi Blueprint Services
OSGi Blueprint Services
 
Rxjs ngvikings
Rxjs ngvikingsRxjs ngvikings
Rxjs ngvikings
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
 
Nouveautés Java 9-10-11
Nouveautés Java 9-10-11Nouveautés Java 9-10-11
Nouveautés Java 9-10-11
 
Redux Toolkit - Quick Intro - 2022
Redux Toolkit - Quick Intro - 2022Redux Toolkit - Quick Intro - 2022
Redux Toolkit - Quick Intro - 2022
 
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
 
liftIO 2022 quasiquote
liftIO 2022 quasiquoteliftIO 2022 quasiquote
liftIO 2022 quasiquote
 
Golang
GolangGolang
Golang
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 

Viewers also liked

Customizing the Django Admin
Customizing the Django AdminCustomizing the Django Admin
Customizing the Django AdminLincoln Loop
 
Intro to Angular Directives using Interactive charting directives that use Hi...
Intro to Angular Directives using Interactive charting directives that use Hi...Intro to Angular Directives using Interactive charting directives that use Hi...
Intro to Angular Directives using Interactive charting directives that use Hi...Lakshman Prasad
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django IntroductionGanga Ram
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To DjangoJay Graves
 

Viewers also liked (6)

Django in the Real World
Django in the Real WorldDjango in the Real World
Django in the Real World
 
Customizing the Django Admin
Customizing the Django AdminCustomizing the Django Admin
Customizing the Django Admin
 
Intro to Angular Directives using Interactive charting directives that use Hi...
Intro to Angular Directives using Interactive charting directives that use Hi...Intro to Angular Directives using Interactive charting directives that use Hi...
Intro to Angular Directives using Interactive charting directives that use Hi...
 
Introduction to Makefile
Introduction to MakefileIntroduction to Makefile
Introduction to Makefile
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django Introduction
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To Django
 

Similar to Building Pluggable Web Applications using Django

djangoic approach to implement common web development paradigms
djangoic approach to implement common web development paradigmsdjangoic approach to implement common web development paradigms
djangoic approach to implement common web development paradigmsLakshman Prasad
 
a hands on guide to django
a hands on guide to djangoa hands on guide to django
a hands on guide to djangoswee meng ng
 
learnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptxlearnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptxbestboybulshaawi
 
To GO or not to GO
To GO or not to GOTo GO or not to GO
To GO or not to GOsuperstas88
 
Web Development Paradigms and djangoic approach to deal with them
Web Development Paradigms and djangoic approach to deal with themWeb Development Paradigms and djangoic approach to deal with them
Web Development Paradigms and djangoic approach to deal with themLakshman Prasad
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyNikhil Mungel
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
Django tutorial
Django tutorialDjango tutorial
Django tutorialKsd Che
 
Two scoops of django version one
Two scoops of django   version oneTwo scoops of django   version one
Two scoops of django version oneviv123
 
Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1MicroPyramid .
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersRosario Renga
 
A gentle intro to the Django Framework
A gentle intro to the Django FrameworkA gentle intro to the Django Framework
A gentle intro to the Django FrameworkRicardo Soares
 
Best Practices for Front-End Django Developers
Best Practices for Front-End Django DevelopersBest Practices for Front-End Django Developers
Best Practices for Front-End Django DevelopersChristine Cheung
 
Go 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX GoGo 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX GoRodolfo Carvalho
 

Similar to Building Pluggable Web Applications using Django (20)

djangoic approach to implement common web development paradigms
djangoic approach to implement common web development paradigmsdjangoic approach to implement common web development paradigms
djangoic approach to implement common web development paradigms
 
a hands on guide to django
a hands on guide to djangoa hands on guide to django
a hands on guide to django
 
Dojango
DojangoDojango
Dojango
 
Django by rj
Django by rjDjango by rj
Django by rj
 
learnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptxlearnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptx
 
django
djangodjango
django
 
Django
DjangoDjango
Django
 
Django
DjangoDjango
Django
 
Django cms best practices
Django cms best practicesDjango cms best practices
Django cms best practices
 
To GO or not to GO
To GO or not to GOTo GO or not to GO
To GO or not to GO
 
Web Development Paradigms and djangoic approach to deal with them
Web Development Paradigms and djangoic approach to deal with themWeb Development Paradigms and djangoic approach to deal with them
Web Development Paradigms and djangoic approach to deal with them
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with Ruby
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Django tutorial
Django tutorialDjango tutorial
Django tutorial
 
Two scoops of django version one
Two scoops of django   version oneTwo scoops of django   version one
Two scoops of django version one
 
Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
 
A gentle intro to the Django Framework
A gentle intro to the Django FrameworkA gentle intro to the Django Framework
A gentle intro to the Django Framework
 
Best Practices for Front-End Django Developers
Best Practices for Front-End Django DevelopersBest Practices for Front-End Django Developers
Best Practices for Front-End Django Developers
 
Go 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX GoGo 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX Go
 

Recently uploaded

What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Recently uploaded (20)

What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

Building Pluggable Web Applications using Django

  • 1. Introduction Using django Features of django Reuseable apps End Notes Building Pluggable Web Applications using Lakshman Prasad Agiliq Solutions April 21, 2010
  • 2. Introduction Using django Features of django Reuseable apps End Notes • For building database driven web applications
  • 3. Introduction Using django Features of django Reuseable apps End Notes • For building database driven web applications • Emphasis on Reuse, DRY and simplicity
  • 4. Introduction Using django Features of django Reuseable apps End Notes Hypothetical Application
  • 5. Introduction Using django Features of django Reuseable apps End Notes Install a pluggable app django-star-rating $pip install django-star-rating INSTALLED APPS = ( ’ django . c o n t r i b . auth ’ , ’ django . c o n t r i b . contenttypes ’ , ’ django . c o n t r i b . sessions ’ , ’ django . c o n t r i b . sites ’ , ’ django . c o n t r i b . admin ’ , ’ starrating ’ , )
  • 6. Introduction Using django Features of django Reuseable apps End Notes Point to an url pattern from b l o g . m o d e l s import P o s t urlpatterns = patterns ( ’ ’ , ( r ’ ˆ$ ’ , ’ b l o g . v i e w s . i n d e x ’ ) , ( r ’ s t a r i n g /$ ’ , { model : P o s t } , ’ s t a r r a t i n g . views . star ’ ) , )
  • 7. Introduction Using django Features of django Reuseable apps End Notes Put the rating where you want! <html> <head> < t i t l e>{{ page . t i t l e }}</ t i t l e> <body> {% s t a r r a t i n g %} <d i v> {{ page . c o n t e n t }} </ d i v> ... </body> ...
  • 8. Introduction Using django Features of django Reuseable apps End Notes Thats it!
  • 9. Introduction Using django Features of django Reuseable apps End Notes Introduction Definition A Case Study: Youtube Stars Overview Philosophy Using django MTV Features of django Features Reuseable apps Writing reuseable apps Community Applications End Notes Django Stats Common Enterprise Hurdles Other
  • 10. Introduction Using django Features of django Reuseable apps End Notes Developed at Lawrence-Journal World
  • 11. 5 million hits per month
  • 13. Majority of the features community contributed
  • 14. 5 years since Open Source
  • 15. Introduction Using django Features of django Reuseable apps End Notes Philosophy
  • 18. Introduction Using django Features of django Reuseable apps End Notes Convention Over Configuration
  • 22. Introduction Using django Features of django Reuseable apps End Notes Model Syntax from d j a n g o . db import m o d e l s c l a s s P o s t ( m o d e l s . Model ) : t i t l e = m o d e l s . C h a r F i e l d ( m a x l e n g t h =100) t e x t = models . T e x t F i e l d ( ) datetime = models . DateTimeField ( ) c l a s s Meta : o r d e r i n g = ( ’−d a t e t i m e ’ , ) def unicode ( self ): return s e l f . t i t l e c l a s s Comment ( m o d e l s . Model ) : post = models . ForeignKey ( Post ) t e x t = models . T e x t F i e l d ( )
  • 23. Introduction Using django Features of django Reuseable apps End Notes Model API >>>from b l o g . m o d e l s import Post , Comment >>>p o s t = P o s t . o b j e c t s . a l l ( ) [ 0 ] >>>p o s t c o m m e n t s = p o s t . c om m en t s et . a l l ( )
  • 24. Introduction Using django Features of django Reuseable apps End Notes Admin by models alone
  • 25. Introduction Using django Features of django Reuseable apps End Notes 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 )
  • 29. Introduction Using django Features of django Reuseable apps End Notes Ugly urls h t t p : / / a r t . com/ a r t g a l l e r y / d e f a u l t . a s p ? s i d =9DF4BC0580DF11D3ACB60090271E26A8 &command= f r e e l i s t h t t p : / / p r e v i e w . y n o t . com/ c g i b i n / n d C G I 5 0 . c g i / Y n o t P h o e n i x / CFsMain .
  • 30. Introduction Using django Features of django Reuseable apps End Notes Good urls h t t p : / /www. w i r e d . com/ a p p l e / MacbookPro / h t t p : / / devmarch . com/ d e v e l o p e r s u m m i t / s p e a k e r s . html
  • 31. Introduction Using django Features of django Reuseable apps End Notes django url pattern from b l o g . m o d e l s import P o s t urlpatterns = patterns ( ’ ’ , ( r ’ ˆ$ ’ , ’ b l o g . v i e w s . i n d e x ’ ) , ( r ’ s t a r i n g /$ ’ , { model : P o s t } , ’ s t a r r a t i n g . views . star ’ ) , )
  • 32. Views
  • 33. Introduction Using django Features of django Reuseable apps End Notes django views from d j a n g o . h t t p import H t t p R e s p o n s e def p o s t ( r e q u e s t ) : r e t u r n H t t p R e s p o n s e ( ’ H e l l o World ! ’ )
  • 34. Introduction Using django Features of django Reuseable apps End Notes django views def p o s t ( r e q u e s t , p o s t i d ) : p o s t = P o s t . o b j e c t s . g e t ( pk=p o s t i d ) i f r e q . method == ’POST ’ : comment form = CommentForm ( r e q u e s t . POST) comment = comment form . s a v e ( ) payload = { ’ post ’ : post , ’ comments ’ : Comment . o b j e c t s . f i l t e r ( p o s t i d=p o s t i d ) , ’ comment form ’ : CommentForm ( ) } r e t u r n r e n d e r t o r e s p o n s e ( ’ p o s t . html ’ , payload , RequestContext ( req ))
  • 36. Introduction Using django Features of django Reuseable apps End Notes django template {% e x t e n d s ” b a s e . html ” %} {% b l o c k body %} {% i f u s e r . i s a u t h e n t i c a t e d %} Welcome {{ u s e r . g e t f u l l n a m e }} {% e l s e %} {% i n c l u d e ” l o g i n . html ” %} {% e n d i f %} ... {% e n d b l o c k %}
  • 38. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface
  • 39. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views
  • 40. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools
  • 41. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools • Sessions
  • 42. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools • Sessions • Authentication
  • 43. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools • Sessions • Authentication • Caching
  • 44. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools • Sessions • Authentication • Caching • Internationalization
  • 45. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools • Sessions • Authentication • Caching • Internationalization • RSS
  • 46. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools • Sessions • Authentication • Caching • Internationalization • RSS • CSRF protection
  • 47. Introduction Using django Features of django Reuseable apps End Notes • Admin Interface • Generic Views • Testing Tools • Sessions • Authentication • Caching • Internationalization • RSS • CSRF protection • File Storage
  • 49. Introduction Using django Features of django Reuseable apps End Notes General conventions adopted by the community
  • 50. Introduction Using django Features of django Reuseable apps End Notes Use template tags <p>The t i m e i s {% c u r r e n t t i m e ”%I :%M %p” %}.</p> from d j a n g o import t e m p l a t e def d o c u r r e n t t i m e ( p a r s e r , t o k e n ) : tag name , f o r m a t s t r i n g = t o k e n . s p l i t c o n t e n t s ( ) r e t u r n CurrentTimeNode ( f o r m a t s t r i n g [ 1 : − 1 ] )
  • 51. Introduction Using django Features of django Reuseable apps End Notes Use Signals from d j a n g o . c o r e . s i g n a l s import r e q u e s t f i n i s h e d r e q u e s t f i n i s h e d . connect ( my callback ) from d j a n g o . db . m o d e l s . s i g n a l s import p r e s a v e from myapp . m o d e l s import MyModel def m y h a n d l e r ( s e n d e r , ∗∗ k w a r g s ) : ... p r e s a v e . c o n n e c t ( m y h a n d l e r , s e n d e r=MyModel )
  • 52. Introduction Using django Features of django Reuseable apps End Notes Basics • Take template_name and extra_context every where
  • 53. Introduction Using django Features of django Reuseable apps End Notes Basics • Take template_name and extra_context every where • Write urls in applications
  • 54. Introduction Using django Features of django Reuseable apps End Notes Basics • Take template_name and extra_context every where • Write urls in applications • Import from the application level
  • 55. Introduction Using django Features of django Reuseable apps End Notes Basics • Take template_name and extra_context every where • Write urls in applications • Import from the application level • Prefix template name with directory
  • 56. Introduction Using django Features of django Reuseable apps End Notes Basics • Take template_name and extra_context every where • Write urls in applications • Import from the application level • Prefix template name with directory • Use MEDIA_URL in templates
  • 57. Introduction Using django Features of django Reuseable apps End Notes Basics • Take template_name and extra_context every where • Write urls in applications • Import from the application level • Prefix template name with directory • Use MEDIA_URL in templates • Reverse url patterns
  • 58. Introduction Using django Features of django Reuseable apps End Notes Basics Done right def r e g i s t e r ( r e q u e s t , backend , s u c c e s s u r l=None , f o r m c l a s s=None , d i s a l l o w e d u r l= ’ registration disallowed ’ , t e m p l a t e n a m e= ’ r e g i s t r a t i o n / r e g i s t r a t i o n f o r m . html ’ , e x t r a c o n t e x t=None ) : ... return r e n d e r t o r e s p o n s e ( template name , { ’ form ’ : form } , context )
  • 59. Introduction Using django Features of django Reuseable apps End Notes Advanced • Use Template Response
  • 60. Introduction Using django Features of django Reuseable apps End Notes Advanced • Use Template Response • Write Views as Classes
  • 61. There is an app for that
  • 62. For every size and style
  • 63. Introduction Using django Features of django Reuseable apps End Notes Github Search ”django”
  • 64. Introduction Using django Features of django Reuseable apps End Notes
  • 65. Introduction Using django Features of django Reuseable apps End Notes Pinax Features • openid support • email verification • password management • site announcements • a notification framework • user-to-user messaging • friend invitation (both internal and external to the site) • a basic twitter clone • oembed support • gravatar support • interest groups (called tribes) • projects with basic task and issue management • threaded discussions • wikis with multiple markup support • blogging • bookmarks
  • 66. Introduction Using django Features of django Reuseable apps End Notes django-mingus django extensions view cache utils basic contact form flatblocks honeypot disqus sugar navbar quoteme djangodblog django− s t a t i c f i l e s sorl django−b i t l y oembded d j a n g o −t w i t t e r template utils python−t w i t t e r django proxy d j a n g o −wysiwyg compressor d j a n g o −s l i m m e r django markup d j a n g o −c r o p p e r google analytics d j a n g o −r e q u e s t
  • 68. Introduction Using django Features of django Reuseable apps End Notes Popular Users • Media • LA Times • NY Times • Washington Post • Guardian
  • 69. Introduction Using django Features of django Reuseable apps End Notes Popular Users • Media • LA Times • NY Times • Washington Post • Guardian • Web2.0 • Mahalo: 10 million Page views • Pownce, SixApart
  • 70. Introduction Using django Features of django Reuseable apps End Notes Popular Users • Media • LA Times • NY Times • Washington Post • Guardian • Web2.0 • Mahalo: 10 million Page views • Pownce, SixApart • Full List: djangosites.com
  • 71. Introduction Using django Features of django Reuseable apps End Notes NASA After an extensive trade study, we selected Django ... as the first and primary application environment for the Nebula Cloud.
  • 72. Introduction Using django Features of django Reuseable apps End Notes Enterprise Adoption Hurdles • Multiple Databases
  • 73. Introduction Using django Features of django Reuseable apps End Notes Enterprise Adoption Hurdles • Multiple Databases • Dynamic settings infrastructure
  • 74. Introduction Using django Features of django Reuseable apps End Notes Enterprise Adoption Hurdles • Multiple Databases • Dynamic settings infrastructure • Tools
  • 75. Introduction Using django Features of django Reuseable apps End Notes About Me • lakshman@agiliqsolutions.com, @becomingGuru • lakshmanprasad.com • Agiliq Solutions Formerly, Usware Technologies @agiliq • Team of Expert Django Developers, Happy Clients
  • 77. Introduction Using django Features of django Reuseable apps End Notes 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/
  • 78. ?