SlideShare a Scribd company logo
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 (16)

SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYASEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
Mandiri Sekuritas
 
32296 23 algoritma tf idf
32296 23 algoritma tf idf32296 23 algoritma tf idf
32296 23 algoritma tf idf
Universitas Bina Darma Palembang
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
Teamstudio
 
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaCaliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for Scala
Pierre Ricadat
 
Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 world
Yura Nosenko
 
Pytest KT.pptx
Pytest KT.pptxPytest KT.pptx
Pytest KT.pptx
RameshN849679
 
Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...
Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...
Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...
Mumbai B.Sc.IT Study
 
Sonar
SonarSonar
Sonar
Peerapat Asoktummarungsri
 
Using OpenNLP with Solr to improve search relevance and to extract named enti...
Using OpenNLP with Solr to improve search relevance and to extract named enti...Using OpenNLP with Solr to improve search relevance and to extract named enti...
Using OpenNLP with Solr to improve search relevance and to extract named enti...
Steve Rowe
 
L'API Collector dans tous ses états
L'API Collector dans tous ses étatsL'API Collector dans tous ses états
L'API Collector dans tous ses états
José Paumard
 
Linux Fundamental
Linux FundamentalLinux Fundamental
Linux Fundamental
Anjar Hardiena
 
Understanding Reactive Programming
Understanding Reactive ProgrammingUnderstanding Reactive Programming
Understanding Reactive Programming
Andres Almiray
 
Prototype pattern
Prototype patternPrototype pattern
Prototype pattern
Shakil Ahmed
 
Introduction to Operational Semantics
Introduction to Operational Semantics Introduction to Operational Semantics
Introduction to Operational Semantics
jsinglet
 
Project Management - Web Application Report
Project Management - Web Application ReportProject Management - Web Application Report
Project Management - Web Application Report
Nakul Sharma
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
Srikanth R Vaka
 
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYASEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
SEJARAH PERKEMBANGAN PROCESSOR DAN JENIS-JENISNYA
Mandiri Sekuritas
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
Teamstudio
 
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaCaliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for Scala
Pierre Ricadat
 
Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 world
Yura Nosenko
 
Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...
Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...
Project Management (Practical Qustion Paper) [CBSGS - 75:25 Pattern] {April -...
Mumbai B.Sc.IT Study
 
Using OpenNLP with Solr to improve search relevance and to extract named enti...
Using OpenNLP with Solr to improve search relevance and to extract named enti...Using OpenNLP with Solr to improve search relevance and to extract named enti...
Using OpenNLP with Solr to improve search relevance and to extract named enti...
Steve Rowe
 
L'API Collector dans tous ses états
L'API Collector dans tous ses étatsL'API Collector dans tous ses états
L'API Collector dans tous ses états
José Paumard
 
Understanding Reactive Programming
Understanding Reactive ProgrammingUnderstanding Reactive Programming
Understanding Reactive Programming
Andres Almiray
 
Introduction to Operational Semantics
Introduction to Operational Semantics Introduction to Operational Semantics
Introduction to Operational Semantics
jsinglet
 
Project Management - Web Application Report
Project Management - Web Application ReportProject Management - Web Application Report
Project Management - Web Application Report
Nakul Sharma
 

Viewers also liked (7)

Django in the Real World
Django in the Real WorldDjango in the Real World
Django in the Real World
Jacob Kaplan-Moss
 
Customizing the Django Admin
Customizing the Django AdminCustomizing the Django Admin
Customizing the Django Admin
Lincoln 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
 
Introduction to Makefile
Introduction to MakefileIntroduction to Makefile
Introduction to Makefile
Tusharadri Sarkar
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django Introduction
Ganga Ram
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To Django
Jay Graves
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
Michael Pirnat
 
Customizing the Django Admin
Customizing the Django AdminCustomizing the Django Admin
Customizing the Django Admin
Lincoln 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 Introduction
Ganga Ram
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To Django
Jay Graves
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
Michael Pirnat
 
Ad

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
Lakshman Prasad
 
a hands on guide to django
a hands on guide to djangoa hands on guide to django
a hands on guide to django
swee meng ng
 
Dojango
DojangoDojango
Dojango
klipstein
 
Django by rj
Django by rjDjango by rj
Django by rj
Shree M.L.Kakadiya MCA mahila college, Amreli
 
learnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptxlearnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptx
bestboybulshaawi
 
django
djangodjango
django
webuploader
 
Django
DjangoDjango
Django
webuploader
 
Django
DjangoDjango
Django
Harmeet Lamba
 
Django cms best practices
Django cms best practicesDjango cms best practices
Django cms best practices
Iacopo Spalletti
 
To GO or not to GO
To GO or not to GOTo GO or not to GO
To GO or not to GO
superstas88
 
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
Lakshman Prasad
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with Ruby
Nikhil Mungel
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
Udi Bauman
 
Django tutorial
Django tutorialDjango tutorial
Django tutorial
Ksd Che
 
Two scoops of django version one
Two scoops of django   version oneTwo scoops of django   version one
Two scoops of django version one
viv123
 
Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1
MicroPyramid .
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
Rosario 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 Framework
Ricardo 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 Developers
Christine 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 Go
Rodolfo Carvalho
 
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
Lakshman Prasad
 
a hands on guide to django
a hands on guide to djangoa hands on guide to django
a hands on guide to django
swee meng ng
 
learnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptxlearnpythondjangochapteroneintroduction.pptx
learnpythondjangochapteroneintroduction.pptx
bestboybulshaawi
 
To GO or not to GO
To GO or not to GOTo GO or not to GO
To GO or not to GO
superstas88
 
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
Lakshman Prasad
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with Ruby
Nikhil Mungel
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
Udi Bauman
 
Django tutorial
Django tutorialDjango tutorial
Django tutorial
Ksd Che
 
Two scoops of django version one
Two scoops of django   version oneTwo scoops of django   version one
Two scoops of django version one
viv123
 
Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1
MicroPyramid .
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
Rosario 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 Framework
Ricardo 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 Developers
Christine 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 Go
Rodolfo Carvalho
 
Ad

Recently uploaded (20)

AI Creative Generates You Passive Income Like Never Before
AI Creative Generates You Passive Income Like Never BeforeAI Creative Generates You Passive Income Like Never Before
AI Creative Generates You Passive Income Like Never Before
SivaRajan47
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
6th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 20256th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 2025
DanBrown980551
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Scott M. Graffius
 
LSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection FunctionLSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection Function
Takahiro Harada
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 
AI Creative Generates You Passive Income Like Never Before
AI Creative Generates You Passive Income Like Never BeforeAI Creative Generates You Passive Income Like Never Before
AI Creative Generates You Passive Income Like Never Before
SivaRajan47
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
6th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 20256th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 2025
DanBrown980551
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Scott M. Graffius
 
LSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection FunctionLSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection Function
Takahiro Harada
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 

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 • [email protected], @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. ?