2016-07-15 21 views
0

Ich habe in letzter Zeit untersucht, wie man Web-Sockets in Django integriert. Laut der Dokumentation ist Channels der Weg zu gehen.Django Channel Web-Sockets - Nachricht an Model.objects

eine illustrative Modell Abfrage

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

Ich möchte Aufgrund meiner Web-Anwendung auf einem Web-Socket-Server verbunden haben. Wenn der Web-Socket-Server eine Nachricht empfängt, sollte er diese Nachricht an eine bestimmte Untergruppe von Socket-Verbindungen senden, die vom Client eingerichtet wurden.

Der Client (nämlich Web-Browser), einmal die gesendete Nachricht empfangen, sollte es an Request.objects anhängen. Von da an sollte die Liste aller Abfragen automatisch mit Django-Templates und darin das definierte Modell aktualisiert werden - ohne den Benutzer zu zwingen, es explizit zu aktualisieren.

, also die Fragen von mir sind: (I) Kanäle (falls dies die bevorzugte Art und Weise Web-Socket-Verbindungen in Django Umgang), wie kann ich die neu eingetroffene Abfrage Objekt Query.objects anhängen - ohne das Objekt in der Datenbank zu speichern, da es bereits vor dem Senden an den Web-Socket-Server eingefügt wurde, (II) den Inhalt der entsprechenden Django-Vorlage aktualisieren.

Antwort

0

Django-Channels ist eine neue Möglichkeit, das Django-Backend mit dem Django-Frontend zu verbinden.

Ihre zweite Frage, die ich bin nicht ganz verstehen, aber in den Verbraucher-Funktionen können Sie die Modelle importieren und aktualisieren Sie die Datenbank

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

Und schließlich können Sie die Vorlage aktualisieren mit Jquery ...

<p></p> 
socket.onmessage = function(e) { 
    $('p').html(e.data); 
}