Skip to main content
Markdown

The Django example

A whole shop on Django, in the package examples/django: sign in as Ann (support), Ben (a customer) or Cara (the warehouse), each in a browser of their own, and try everything this guide covers.

The Example Shop signed in as Ben: his order 1042, shipped and live, with its timeline. The mugs and how many are looking at them. The daily meeting. His chat with Ann. The people in the shop, with call buttons. And the webhooks the server got

On the pageWhat makes it
The order of Ben follows as Ann moves it on, and Ben alone gets a noticethe order:{id} room, sent to by the order_status view once its transaction commits, with except_tab, and to_user (sending)
The chat of Ann and Ben, with typing, reactions and read ticks<wordplus-chat> on the chat:{a}:{b} room, which lets pages send them. The server keeps the conversation from the webhook and gives it back from GET /chat/messages (keeping the conversation). The name and picture of the other side above it from the directory
Who is in the shop, with a call button for each<wordplus-online> on the shop presence room, the name and role of each member
The daily meeting<wordplus-room>, a group call
The order timeline, and what the cloud carried of itthe order room history. The order_wire view seals the update as the server sends it, with the room key (encryption)
How many are looking at the mugsthe product:{id} room, public and counted
The webhooks the server gotrealtime.on("*", …), which sends each on to the shop webhooks room (webhooks)

Try it online at django.docs.wordplus.cloud: this example as a demo, where every visitor gets a shop of their own for a day, and its links open Ben and Cara in windows of their own. Its calls end after 10 minutes and its meetings after 15 (limits in the demo part, which the page keeps to).

Run it​

cd examples/django
cp .env.example .env # the key and secret of your app, with http://localhost:8000 among its addresses, and a local key
python -m venv .venv && .venv/bin/pip install -r requirements.txt
npm install # bundles the page, and copies the worker, the room client and the components into static/
.venv/bin/python manage.py migrate # the people of the shop (Ann 34, Ben 42, Cara 43) and the order of Ben
.venv/bin/python manage.py runserver # http://localhost:8000

Open it in two browsers (or a private window), sign in as Ann in one and Ben in the other, and move the order on, chat, and call.

Its files​

File
store/realtime.pythe realtime server part: credentials, profiles from the shop people, the rooms and calls it declares, and its webhooks
config/urls.pythe browser routes and the webhook with wr.urls(), and the shop
store/views.pysigning in, the page with config_for(), moving the order on, and what the cloud carried of it
store/shops.pythe shops, by number: their people, order and room names
store/models.py, store/migrations/the profiles of the people and the order, and the data they start with
store/templates/store/page.htmlthe page, with the settings and the shop data through json_script
demo.pythe demo part alone (WORDPLUS_DEMO=1), the same file in the three Python examples: a shop for each visitor, its windows, and the frame around the page
shop/shop.jsthe page script: connect(), the order, the product, the chat, who is in the shop, the webhooks, the meeting and the call screen. The same file runs the shop in every example