Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beyond Web 2.0 - Django and Python in the modern web ecosystem

Beyond Web 2.0 - Django and Python in the modern web ecosystem

Django is over 10 years old; but the web that it was built for - the world of "Web 2.0" - doesn't really exist any more. Yes, we still need to rapidly develop database-backed websites, AJAX-enabled, but the modern web is faced with new problems and new challenges. Many of those challenges involve interacting with devices that aren't desktop machines, and platforms that aren't a traditional browser - places where Python isn't a first-class citizen.

Does this mean we have to abandon Django and Python for other frameworks and languages? Can we keep using Python and Django on the server side and interact with independent client side frameworks? Or can we push Python and Django into these new environments?

In this talk, Dr Russell Keith-Magee will explore the problems, and the potential solutions, to these problems.

Video:
Video: http://opbeat.com/community/posts/beyond-web-2-0-django-and-python-in-the-modern-web-ecosystem-by-russell-keith-magee/

Russell Keith-Magee

April 01, 2016
Tweet

More Decks by Russell Keith-Magee

Other Decks in Programming

Transcript

  1. Beyond Web 2.0: Django and Python in the modern Web

    ecosystem Dr Russell Keith-Magee DjangoCon Europe 2016
  2. Beyond Web 2.0: Django and Python in the modern Web

    ecosystem Dr Russell Keith-Magee DjangoCon Europe 2016
  3. A Django project, c.2016 Template URLs Forms V Views Models

    memcached API API V Browser V V  V
  4. A Django project, c.2016 Template URLs Forms V Views Models

    memcached API API V Browser V V  V
  5. A Django project, c.2016 Template URLs Forms V Views Models

    memcached API API V Browser V V  V
  6. Example <p>Name: <input id="data"> <button id="test">Click!</button> </p> <script type="text/python"> from

    browser import document as doc, alert def echo(*args): alert("Hello %s !" % doc["data"].value) doc["test"].bind("click", echo) </script>
  7. Example >>> def clean(username): ... return username.lower() >>> clean.__code__ <code

    object clean at 0x.....> >>> clean.__code__.co_code b'|\x00\x00j\x00\x00\x83\x00\x00S' >>> import base64 >>> base64.encodebytes(clean.__code__.co_code) b'fAAAagAAgwAAUw==\n'
  8. Rubicon NSURL = ObjCClass("NSURL") # [NSURL URLWithString:@"http://pybee.org"]; NSURL.URLWithString_("http://pybee.org/") class Handler(NSObject):

    @objc_method def pokeWithValue_(self, v: int) -> None: print("Poking with", v) # Handler *hndl = [[Handler alloc] init]; hndl = Handler.alloc().init() # [hndl pokeWithValue:37]; hndl.pokeWithValue_(37)
  9. VOC