python meta classes and how django uses them

18
Python Meta classes and how Django uses them Lakshman Prasad

Upload: lakshman-prasad

Post on 19-May-2015

8.757 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Python Meta Classes and how django uses them

Python Meta classes and how Django uses them

Lakshman Prasad

Page 2: Python Meta Classes and how django uses them

Meta Classes

A Design pattern

Dynamically create classes

Enables Flexibility, Good API

Used by Frameworks

Perform “Magic”

Page 3: Python Meta Classes and how django uses them

Where Meta Classes?

Frameworks, frameworks, frameworks.

Django uses them extensively.

Scrappy, a web scrapping framework.

Flexible Django apps. Eg: Django-registration

Page 4: Python Meta Classes and how django uses them
Page 5: Python Meta Classes and how django uses them

Executes the code when encountered

Creates namespace and stores all variables in it

Page 6: Python Meta Classes and how django uses them

`type` is an inbuilt MetaClass

Dynamic class = Static classes

Page 7: Python Meta Classes and how django uses them

`__metaclass__` defines metaclases

Page 8: Python Meta Classes and how django uses them

Meta Class Magic

Define a class extending object

Examined type is string, Magic!

Enables Declarative Syntax

Page 9: Python Meta Classes and how django uses them

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

Page 10: Python Meta Classes and how django uses them

Django Models

Page 11: Python Meta Classes and how django uses them

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

Page 12: Python Meta Classes and how django uses them

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`

Page 13: Python Meta Classes and how django uses them

Django Forms

Page 14: Python Meta Classes and how django uses them

Rendering in html

Validation for right data

Displaying errors

Customization options

Provided model, storing to the database

Page 15: Python Meta Classes and how django uses them

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

Page 16: Python Meta Classes and how django uses them

Dynamic Django Forms - 2

When high complexity, instantiate a form, dynamically

Page 17: Python Meta Classes and how django uses them

Resources

Python, Django Documentation, Source.

Pro Django, by Marty Alchin

Django-registration v0.7 by James Bennett

Page 18: Python Meta Classes and how django uses them

Thank You!

[email protected]

: Build Cutting Edge Web Apps.

Small Team of expert Django Developers.

Exclusively develop in Django, Python stack.

@becomingGuru, @uswaretech