在 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 框架,始终认为用户正在几英里外使用另一台设备。