Python Metaclass and How Django uses them: Foss 2010

723 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
723
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Python Metaclass and How Django uses them: Foss 2010

  1. 1. Python Meta classes and howDjango 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 encounteredCreates namespace and stores all variables in it
  5. 5. `type` is an inbuilt MetaClassDynamic class = Static classes
  6. 6. `__metaclass__` defines metaclases
  7. 7. Meta Class MagicDefine a class extending objectExamined 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 - 1Forms API is flexible, but often needs Meta Classes`base_fields` and `fields` list store all fieldsChange field attributes while initialization
  15. 15. Dynamic Django Forms - 2When high complexity, instantiate a form,dynamically
  16. 16. ResourcesPython, Django Documentation, Source.Pro Django, by Marty AlchinDjango-registration v0.7 by James Bennett
  17. 17. Thank You!lakshman@uswaretech.com : Build Cutting Edge Web Apps.Small Team of expert Django Developers.Exclusively develop in Django, Python stack.@becomingGuru, @uswaretech

×