在 Django 中重新加载 <div> 元素但没有刷新发生
Reloading a <div> element in Django but no refresh happening
我正在通过条形码扫描仪将对象添加到我的阵列列表中。条码扫描仪每次扫描后都会添加数据,这取决于用户扫描的速度。为了显示这些数据,我创建了一个页面。我不希望刷新整个页面,而是希望显示扫描代码的特定 div。
这是我目前所做的
urls.py
path('status', include('detect_barcodes.urls')),
views.py:
@ms_identity_web.login_required
def detect(request):
stream = CameraStream()
success, frame = stream.camera.read()
if success:
status = True
else:
status = False
bar_codes = stream.used_codes
data = (",\n".join(bar_codes))
return render(request, 'detect_barcodes/detect.html', context={'data': data, 'cam_status': status})
模板文件(detect.html):(我只想自动刷新 id="container" 的 div")
<div class="main-wrap">
<div class="container">
{% if cam_status %}
<img src="{% url 'camera_feed' %}" style="width: 640px; height: 480px;"/>
{% else %}
<h3>Camera stream status: Camera is either not accessible or busy</h3>
<h5>Things to check:</h5>
<ul class="text-right list-inline">
<li>USB connection?</li>
<li>Camera number in your .env file?</li>
<li>Camera is already in use?</li>
</ul>
{% endif %}
</div>
<div class="container" id="container">
<form action="/submit/" method="post">
{% csrf_token %}
Fill the Detail:
<br/>
<textarea id="description" rows="17" cols="90" name="description" class="myForm"> {{ data }}
</textarea>
<input type="submit" value="submit"/>
</form>
</div>
</div>
When I run the code and scan, no refresh is done to the div
我试过js位
<script>
function refresh() {
$.ajax({
url: "{% url 'detect_barcodes' %}",
success: function (data) {
$('#container').replaceWith($('#container', data)); // NOTE this
}
});
}
var seconds = 3; // seconds, edit here
setInterval(refresh(), seconds * 1000);
</script>
到目前为止刷新 div 没有运气,即使更改了数组列表中的值,该值也不会显示。我最终手动重新加载整个页面以显示数据。
此代码将不起作用,因为您的 Django 代码正在与扫描仪交互,并且流只会在请求时打开,这将是 ms,您永远不会捕捉到它。然后,当刷新到来时,没有任何内容将请求与先前扫描的值相关联。
你需要考虑另一种选择
P.S Django 是一个 Web 框架,始终认为用户正在几英里外使用另一台设备。
我正在通过条形码扫描仪将对象添加到我的阵列列表中。条码扫描仪每次扫描后都会添加数据,这取决于用户扫描的速度。为了显示这些数据,我创建了一个页面。我不希望刷新整个页面,而是希望显示扫描代码的特定 div。
这是我目前所做的
urls.py
path('status', include('detect_barcodes.urls')),
views.py:
@ms_identity_web.login_required
def detect(request):
stream = CameraStream()
success, frame = stream.camera.read()
if success:
status = True
else:
status = False
bar_codes = stream.used_codes
data = (",\n".join(bar_codes))
return render(request, 'detect_barcodes/detect.html', context={'data': data, 'cam_status': status})
模板文件(detect.html):(我只想自动刷新 id="container" 的 div")
<div class="main-wrap">
<div class="container">
{% if cam_status %}
<img src="{% url 'camera_feed' %}" style="width: 640px; height: 480px;"/>
{% else %}
<h3>Camera stream status: Camera is either not accessible or busy</h3>
<h5>Things to check:</h5>
<ul class="text-right list-inline">
<li>USB connection?</li>
<li>Camera number in your .env file?</li>
<li>Camera is already in use?</li>
</ul>
{% endif %}
</div>
<div class="container" id="container">
<form action="/submit/" method="post">
{% csrf_token %}
Fill the Detail:
<br/>
<textarea id="description" rows="17" cols="90" name="description" class="myForm"> {{ data }}
</textarea>
<input type="submit" value="submit"/>
</form>
</div>
</div>
When I run the code and scan, no refresh is done to the div
我试过js位
<script>
function refresh() {
$.ajax({
url: "{% url 'detect_barcodes' %}",
success: function (data) {
$('#container').replaceWith($('#container', data)); // NOTE this
}
});
}
var seconds = 3; // seconds, edit here
setInterval(refresh(), seconds * 1000);
</script>
到目前为止刷新 div 没有运气,即使更改了数组列表中的值,该值也不会显示。我最终手动重新加载整个页面以显示数据。
此代码将不起作用,因为您的 Django 代码正在与扫描仪交互,并且流只会在请求时打开,这将是 ms,您永远不会捕捉到它。然后,当刷新到来时,没有任何内容将请求与先前扫描的值相关联。
你需要考虑另一种选择
P.S Django 是一个 Web 框架,始终认为用户正在几英里外使用另一台设备。