Moe
Moe

Reputation: 196

automatic refreshing <div> with django

I have a form that when it is posted the content of console.html gets changed. for refreshing the page I used the following code but this does not refresh console.html

javascript

function autorefresh() {
        // auto refresh page after 1 second
        setInterval('refreshPage()', 1000);
}

function refreshPage() {
    var container = document.getElementById("console");
    container.innerHTML= '<object type="text/html" data="../../templates/snippets/console.html" ></object>';

   //this line is to watch the result in console , you can remove it later
    console.log("Refreshed");
}

index.html

<script>autorefresh()</script>
<div id="console" >

{% include 'snippets/console.html' %}

</div>

view.py

def index(request):
    if request.method == "GET":
        return render(request, 'index.html')
    if request.method == "POST":  # If the form has been submitted...
        form=InputForm(request)
        form.do_function()
        return render(request, 'index.html')

Upvotes: 1

Views: 4280

Answers (1)

Moe
Moe

Reputation: 196

I rewrote html with the help of jquery:

<script type="text/javascript" src="{% static "js/jquery.js" %}"></script>
<script>
function autorefresh() {
        // auto refresh page after 1 second
        setInterval('refreshPage()', 1000);
}

function refreshPage() {
        $.ajax({
        url: '{% url 'console' %}',
        success: function(data) {
        $('#console').html(data);
        }
    });
}
</script>
.
.
.
<script>autorefresh()</script>
<div id="console" ></div>

view.py

def console(request):
    data=
    return render(request, 'snippets/console.html',{"data": data})

console.html

{% for line in data %}
{{ line }}
{% endfor %}

and finally add console to urls.

urls.py

urlpatterns = [
    path('', views.index, name='index'),
    path('console', views.console, name='console'),
]

I hope you don't spend a day finding the solution :))

Upvotes: 2

Related Questions