Adam Johnson

Home | Blog | Projects | Colophon

Tools I Learnt About at DjangoCon Europe 2019

2019-05-08

Shipping some packages

DjangoCon Europe 2019 was great fun. I loved meeting old and new friends, giving my talk and workshop, and learning in the other talks.

The talks are now all on the YouTube Channel. If you want to read about each talk, Tobias Kunze live-blogged his notes on each.

I can’t beat Tobias’ summaries. What I can present are the most interesting tools I learnt about. (Interesting to me at least!)

structlog

PyPI link

I learnt about this in Markus Holtermann’s talk Logging Rethought 2: The Actions of Frank Taylor Jr..

Structured logging is great. I’ve previously worked with Fluentd, using it to enforce JSON structured log messages. This included parsing messages from less structured sources, such as Nginx logs, into JSON.

structlog supports outputting structured log messages directly from Python, and has a similar interface to the familiar standard library logging. Also it has a cool beaver with braces as its logo.

django-webpack-loader

PyPI link

I learnt about this in Nathan Gaberel’s talk Take the goRe out of a DjangoReact stack.

Webpack is the front-end JavaScript bundler du jour. django-webpack-loader provides an easy(ish) integration between Django and Webpack.

The talk is worth watching to get an idea how this works. Nathan also recommended are Aymeric Augustin’s React-focussed blog series:

Aymeric shows the two essential ways of combining a JavaScript app with Django:

When I next start on a greenfield, cutting-edge JavaScript project, I’ll first refresh myself by going through these resources!

emender

GitHub link

From Mikey Ariel’s talk Docs or It Didn’t Happen. (That I also mentioned in my previous post Improving My Technical Writing.)

This is a Lua-based “test automation framework tailored specifically for product documentation.” I found it interesting to see a framework specifically for this. There are other tools, for example Python-based Sphinx extensions.

Leaflet JS

Site link

From Paolo Melchiorre’s talk Maps with GeoDjango, PostGIS and Leaflet.

Leaflet is a JavaScript library for making interactive maps that are mobile-friendly. It looks like it’s straightforward to implement, and the talk detailed a large site using it.

confucius

PyPI link

From Curtis Maloney’s lightning talk “Another View on Handling Settings.”

There was a bit of a lightning talk battle on settings. Curtis’ talk followed Alexander Ryabtsev’s talk from the previous day, which is summarized in his blog post Configuring Django Settings: Best Practices.

Curtis’ new library Confucius aims to be a forward-thinking way of solving these problems, using Python 3’s type annotations and PEP 562’s module-level __getattr__. For example, this could be your Django settings file, on Python 3.7+:

from confucius import BaseConfig

class Config(BaseConfig):
    DB_HOST = 'localhost'
    DB_PORT = 5432

__getattr__ = Config.module_getattr_factory()

The settings, such as DB_HOST, can be overridden from their defaults with their respective environment variables. Pretty neat!

Fin

Hope you enjoyed browsing these with me,

—Adam


Tags: django

Subscribe to my weekly digest email