Skip to main content
django-webnodes
===============

The goal of `django-webnodes` is to create a new way of writing django templates which is fully compatible with the current django templating infrastructure.

It's born to make it easy to support standard, reusable `bussiness components` across your application.

`django-webnodes` are like special functional calls to render components of your page.

## Usage:

This use as django templatetags

{% webnode node_name [value1 value2 ... key1=value1 key2=value2 ...] %}

- ``value1``: position value passed as ``value1`` in ``get_context()`` and ``render()`` methods
- ``key1=value1``: dictionary key-value pairs passed as ``key1`` in ``get_context()`` and ``render()`` methods

## Demo

For example, if you are implementing a app statistics website, and you want to have app ratings appear on both list page and detail page, you can make an `RatingsNode` to render them on both pages.

First, create a Python module for your webnodes, e.g., webnodes.py(place it in ``yourapp`` module)

from webnodes import WebNode


class RatingsNode(WebNode):

template = 'webnodes/ratings.html'

def get_context(self, app_id):
...
ratings = ...
return {'ratings': ratings}

Calling from template:

{% load webnode %}

<p>{% webnode RatingsNode app.id %}</p>

## Extension

If you want see this webnode independently, you can add this in your urls' urlpatterns

url(r'^webnodes/', include('webnodes.ext.urls'))

Then open `http://127.0.0.1:8000/webnodes/RatingsNode?app_id=414603431` in your browser, you will see it.

## Why use this?

1. Decoupling the logic of front-end and back-end separately;
2. Make each component as a webnode will improve cohesion(because each component's template and data(include the logic of fetch data) are always strongly correlated);
3. We can test each component independently;
4. easy to realize partial renewal.

## Todos

support css and javascript

# Refs

Inspired by [tornado UI Module](https://github.com/facebook/tornado/blob/master/tornado/web.py), [django custom templatetags](https://docs.djangoproject.com/en/dev/howto/custom-template-tags/).

Based on [django-widgets(1)](https://code.google.com/p/django-widgets) and [django-widgets(2)](https://github.com/marcinn/django-widgets)

Release files for django-webnodes 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-webnodes 0.0.3
File Size Uploaded
django-webnodes-0.0.3.tar.gz 4.4 kB Details

Release files / django-webnodes-0.0.3.tar.gz

Download URL django-webnodes-0.0.3.tar.gz
Size 4.4 kB
Tags Source
SHA-256 checksum
How to use checksums
cb57623b9ddcdae451dd1c023db12e29c6e0b7b57f2ddedc2a1902c272b6a4f8
BLAKE2b-256 checksum
How to use checksums
39e134d725fc3d4fbb2ca9f6cdd745f34c74774979e8fb7254f25b52fe2298e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.3 This release

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page