如何在 Django 中将数据从 views.py 连续发送到 html 模板?
How to send data continuously from views.py to html template in Django?
有没有办法将连续数据从 views.py 发送到 html 模板?
如果我使用 return 那么我们只能发送一次数据,但我想连续发送一段时间。
这是我在 django 中使用 socketio 的例子。
首先你得安装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>
有没有办法将连续数据从 views.py 发送到 html 模板? 如果我使用 return 那么我们只能发送一次数据,但我想连续发送一段时间。
这是我在 django 中使用 socketio 的例子。
首先你得安装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>