Как отправить данные непрерывно из views.py в html-шаблон в Django?
Есть ли способ отправить непрерывные данные из views.py в html-шаблон? Если я использую return, то мы можем отправить данные только один раз, но я хочу отправлять их непрерывно в течение некоторого времени.
Вот мой пример использования socketio с django.
Прежде всего, необходимо установить python-socket.io.
pip install python-socketio
views.py (вы можете поместить этот код куда угодно, но не в шаблон.)
import os
import socketio
async_mode = None
basedir = os.path.dirname(os.path.realpath(__file__))
sio = socketio.Server(async_mode=async_mode)
# this function is called whenever a client is connected to the server.
@sio.event
def connect(sid, environ):
sio.emit("response", {"message": "Welcome!"}, room=sid)
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
import socketio
from post.socketioserver import sio
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test_app.settings')
django_app = get_wsgi_application()
application = socketio.WSGIApp(sio, django_app)
client.html
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.min.js"></script>
<script charset="utf-8" type="text/javascript">
const socket = io.connect();
socket.on("connect", ()=>{
console.log("I'm connected!")
});
socket.on("response", (dict)=>{
console.log(dict["message"]);
});
</script>