Python Meta classes and how
Django uses them Lakshman Prasad
Meta Classes
 A Design pattern
 Dynamically create classes
 Enables Flexibility,Good API
 Used by Frameworks
 Perform...
Where Meta Classes?
 Frameworks, frameworks, frameworks.
 Django uses them extensively.
 Scrappy, a web scrapping frame...
Executes the code when encountered
Creates namespace and stores all variables in it
`type` is an inbuilt MetaClass
Dynamic class = Static classes
`__metaclass__` defines metaclases
Meta Class Magic
Define a class extending object
Examined type is string, Magic!
Enables Declarative Syntax
MetaClasses, not always
 Simple function decorators
 Unintuitive to end developers, unless
explained
 Python 2.6+ has C...
Django Models
Django Models Creation
 Declarative Syntax, No `__metaclass__`
 New model created in place
 Options into `Options` obje...
Inside Django Models
 Return the same registered Model from
AppCache
 Original options and Meta options stored in
`_meta...
Django Forms
 Rendering in html
 Validation for right data
 Displaying errors
 Customization options
 Provided model, storing to t...
Dynamic Django forms - 1
Forms API is flexible, but often needs Meta Classes
`base_fields` and `fields` list store all fie...
Dynamic Django Forms - 2
When high complexity, instantiate a form,
dynamically
Resources
Python, Django Documentation, Source.
Pro Django, by Marty Alchin
Django-registration v0.7 by James Bennett
ThankYou!
lakshman@uswaretech.com
: Build Cutting EdgeWeb Apps.
SmallTeam of expert Django Developers.
Exclusively develop...
Python Meta Classes and how django uses them
Upcoming SlideShare
Loading in …5
×

Python Meta Classes and how django uses them

9,757 views

Published on

Published in: Technology

Python Meta Classes and how django uses them

  1. 1. Python Meta classes and how Django uses them Lakshman Prasad
  2. 2. Meta Classes  A Design pattern  Dynamically create classes  Enables Flexibility,Good API  Used by Frameworks  Perform “Magic”
  3. 3. Where Meta Classes?  Frameworks, frameworks, frameworks.  Django uses them extensively.  Scrappy, a web scrapping framework.  Flexible Django apps. Eg: Django-registration
  4. 4. Executes the code when encountered Creates namespace and stores all variables in it
  5. 5. `type` is an inbuilt MetaClass Dynamic class = Static classes
  6. 6. `__metaclass__` defines metaclases
  7. 7. Meta Class Magic Define a class extending object Examined type is string, Magic! Enables Declarative Syntax
  8. 8. MetaClasses, not always  Simple function decorators  Unintuitive to end developers, unless explained  Python 2.6+ has Class Decorators  But being powerful, where they are needed, indespesible
  9. 9. Django Models
  10. 10. Django Models Creation  Declarative Syntax, No `__metaclass__`  New model created in place  Options into `Options` object  Register in registry called `AppCache`  Add attributes to new model
  11. 11. Inside Django Models  Return the same registered Model from AppCache  Original options and Meta options stored in `_meta`  Add more useful attributes/classes like `DoesnotExist`, `module_name` and `class_name`
  12. 12. Django Forms
  13. 13.  Rendering in html  Validation for right data  Displaying errors  Customization options  Provided model, storing to the database
  14. 14. Dynamic Django forms - 1 Forms API is flexible, but often needs Meta Classes `base_fields` and `fields` list store all fields Change field attributes while initialization
  15. 15. Dynamic Django Forms - 2 When high complexity, instantiate a form, dynamically
  16. 16. Resources Python, Django Documentation, Source. Pro Django, by Marty Alchin Django-registration v0.7 by James Bennett
  17. 17. ThankYou! lakshman@uswaretech.com : Build Cutting EdgeWeb Apps. SmallTeam of expert Django Developers. Exclusively develop in Django, Python stack. @becomingGuru, @uswaretech

×