Skip to main content
Introduction to Python & Django




       Udi h Bauman, Tikal Knowledge
Personal background

1994 -        2002 -


1997 -        2004 -


1999 -        2005 -
Also in 2004
●   Didn't listen to smart people :(
        –   Chief architect of a large innovative
             company told me to dump Java & switch
             to Python
                ●   Citing Paul Graham saying that Java is a
                     dead leaf in the evolutionary tree of
                     programming languages
2006 -                              &


●   Smiling ever since
●   “People who've made the switch to
    dynamic languages such as Python seem
    much, much happier.”
                  –   Bruce Eckel, Author of “Thinking in Java” &
                        “Thinking in Python”
Python, WTF?
●   Isn't this some scripting language for
    system administrators & the like?


                    What does it have to do with us –
                    serious Java & .Net programmers???
Python, WTF?
●   Python is a modern programming
    language.
       –   Pure OOP (Object Oriented Programming)
       –   Pure AOP (Aspect Oriented Programming)
       –   Pure FP (Functional Programming)
Python, WTF?
●   Some companies & organization attract the
    best programmers in the world
●   E.g.
Python, WTF?
●   Turns out that the programming language
    of choice in most of these places is Python
●   E.g.
Quotes
●   “Python has been an important part of
    Google since the beginning, and remains
    so as the system grows and evolves”
       –   Peter Norvig, Director of Research, Google
Quotes
●   “Python is fast enough for our site and
    allows us to produce maintainable features
    in record times, with a minimum of
    developers”
       –   Cuong Do, Engineering Manager, YouTube
            (Watch the video: http://bit.ly/youtube_scalability)
The reason, IMHO
●   Python offers the optimal combination of
    Power & Simplicity
       –   perfect for coding Business Logic
       –   perfect for any software at any size &
            complexity
Python demo
●   Arithmetic's &       ●   Functions
    Strings              ●   Doctest
●   Introspection        ●   Classes
●   Formatting           ●   List comprehension
●   Lists, Tuples &      ●   I/O
    Dictionaries
●   Blocks, If & loops
Demo screenshots
Demo screenshots
Python libraries
●   Real wealth of libraries
●   The Python Package Index (PyPi) lists
    7.7K
●   Cover almost any functionality & need
●   Very easy to install
●   Very intuitive
        –   Work just as you expect them to work
Python summary
●   Python has many advantages, but the
    bottom line is:
       –   Happy management
       –   Happy staff
       –   Happy customers


               ●   Don't take my word – Google what people
                    say about their experience with Python &
                    tell me if you find any counter-example
Python summary
●   What's in it for us?
        –   Need implement a new complex system or
             service?
        –   Prototype it in Python
        –   Then realize that it's ready for usage
Introduction to Django
●   Leading Python Web Framework
●   Good for any service, no just Web apps
Django slogan
●   The Web framework for Perfectionists
    with deadlines
Perfectionists?
●   Emphasizing clean MVC design
●   Django apps are reusable by design
●   Based on Best-Practices
●   Extremely easy to unit-test
Deadlines?
●   Growned in the Online Newspapers
    industry
       –   Designed to make development fast
               ●   E.g., automatic admin interface
●   Automates repetitive tasks
●   Leading technology in new US Startups,
    according to recent polls
Quotes
●   “After an extensive trade study, we selected
    Django as the first and primary application
    environment for the Nebula Cloud. ”
                  –   NASA,
                       http://nebula.nasa.gov/services/framework
Model & basis of
Main features
●   ORM               ●   Reusable apps
●   Admin             ●   Unit testing
●   URL's design      ●   Middleware
●   Auth              ●   Caching
●   Template engine   ●   I18N
●   Integrated GIS
Comparison with Java stacks
Lots of reusable apps
●   Hundreds of pluggable apps exist, for
    almost any purpose
●   Very easy to plug into your project
        –   Adds complete functionality, integrated with
             your application
How do you develop/run?
●   I use the Eclipse-based Aptana IDE
●   I run Django on LAMP (Linux, Apache,
    MySQL/Postgres, Python) or AppEngine
       –   You can also deploy Django as .war on any
            Java Application Server
Django demo
●   Let's write a small Django app for project
    management
        –   Manage projects & tasks
        –   Manage users & roles
        –   Rich UI (search, filters, recent actions list)
        –   Project health indicators
        –   Tasks focus chart
Demo screenshots
Demo screenshots
Demo screenshots
Demo screenshots
Java/.Net vs. Django
●   Think how much code it would take in Java
    or .Net
       –   Common
       –   BI
       –   DAL
       –   Basic
       –   Logic
       –   API
Java/.Net vs. Django
●   Damn, Django does the same thing without
    all the complexity & verbosity
●   How much time & cognitive effort it takes to
    learn, understand & modify it?
Django summary
●   What's in it for us?
        –   Nothing
                ●   you can afford developing systems using
                     10 developers for several weeks
                ●   instead of 1-2 developers for several
                      days :)
Django summary
●   Seriously:
        –   Need implement a new system?
        –   Prototype it in Django in a few hours
        –   Then realize that it's ready for production