0

最近、Web ソケットを Django に統合する方法を調査しています。ドキュメントによると、Channelsを使用するのが最善の方法です。

例示的なモデルクエリが与えられた場合

class Request(models.Model):
    id = models.IntegerField(name="id", primary_key=True)
    query = models.CharField(name = 'query', max_length=1024)

Web アプリケーションを Web ソケット サーバーに接続したいと考えています。Web ソケット サーバーは、メッセージを受信すると、クライアントによって確立されたソケット接続の特定のサブセットにそのメッセージをブロードキャストする必要があります。

クライアント (つまり、Web ブラウザー) は、ブロードキャストされたメッセージを受信すると、それをRequest.objectsに追加する必要があります。それ以降、すべてのクエリのリストは、Django テンプレートとその中で定義されたモデルを使用して自動的に更新される必要があります。ユーザーが明示的に更新する必要はありません。

したがって、私の質問は次のとおりです。(I) Channels を使用する場合 (これが Django で Web ソケット接続を処理するための推奨される方法である場合)、新しく到着したQueryオブジェクトをQuery.objectsに追加するにはどうすればよいですか?オブジェクトをデータベースに保存する必要はありません。 Web ソケット サーバーに送信する前に既に挿入されているため、(II) 対応する Django テンプレートのコンテンツを更新します。

4

1 に答える 1

0

Django-Channels は、Django バックエンドを Django フロントエンドに接続するための新しい方法です。

2番目の質問は完全には理解できませんが、コンシューマー関数内でモデルをインポートしてデータベースを更新できます

# consumers.py 
def hello(message):
    obj = Request.objects..
    obj.save()
    message.reply_channel.send({
        "text": message.content['text'],
    })

最後に、jquery を使用してテンプレートを更新できます...

<p></p>
socket.onmessage = function(e) {
    $('p').html(e.data);
}
于 2016-07-24T18:46:37.040 に答える