公式パッケージ · フレームワーク

Django Channels なしでライブな Django ページ

WSGI の Django アプリがいつもどおり HTML の断片をレンダリングしてブロードキャストし、開いているすべてのページがそれを追加・置換・削除します。Django Channels、ASGI サーバー、Redis の運用は不要です。

  • @broadcasts デコレーター 1 つで、一覧がすべてのページでライブになります。ビュー、管理画面、Celery タスク、シェルのどこから保存しても同じです。
  • ブロードキャストはトランザクションのコミットを待って送られ、htmx と Turbo 8 にも対応しています。
  • 独自のプライベート/プレゼンスチャンネルへの署名、Webhook の検証、プッシュ通知トークンの発行もできます。Python 3.10 以降の Django 4.2〜6.1 に対応。

サインインすると、コード例にご自身のクラスターホストが入ります。 サインイン

  1. インストール

    pip install django-hibira
    
    # INSTALLED_APPS += ["django_hibira"]
    # urlpatterns += [path("hibira/", include("django_hibira.urls"))]
    
    HIBIRA_APP_ID=YOUR_APP_ID
    HIBIRA_APP_KEY=YOUR_APP_KEY
    HIBIRA_APP_SECRET=YOUR_APP_SECRET
    HIBIRA_HOST=ws.hibira.io
    
    python manage.py hibira_check
  2. 設定する

    # chat/models.py
    from django.db import models
    from django_hibira import broadcasts
    
    
    @broadcasts(to="room", target="messages")
    class Message(models.Model):
        room = models.ForeignKey(Room, on_delete=models.CASCADE, related_name="messages")
        body = models.TextField()
  3. 使う

    {# base.html, in <head> #}
    {% load hibira %}
    {% hibira_scripts %}
    
    {# chat/room.html #}
    {% hibira_stream room %}
    <ul id="messages">
      {% for message in room.messages.all %}{% include "chat/_message.html" %}{% endfor %}
    </ul>

始める前に

  • アプリのシークレットは、アプリの作成時とシークレットのローテーション時に一度だけ表示されます。サーバーにだけ置き、ブラウザやゲームのビルドには入れないでください。
  • Free プランでは、ページを読み込むすべてのオリジンをアプリの許可オリジンに登録してください(開発中は http://localhost:8000、その後は自分のドメイン)。"*" は有料プランで使えます。

ダッシュボードのアプリキーを使ってください。シークレットはサーバー側だけに置きます。チャンネル、イベント、認可エンドポイントは Pusher とまったく同じように動作します。 無料でアカウントを作成 →