Search code examples
javascriptpythondjangodjango-viewspopup

Django - stop logout with javascript pop-up confirm box


In my django site I have a logout button that redirects to the view logout. When the button is clicked it instantly logs the user out, but I would like a JS pop-up confirm box to appear then the logout button is clicked.

When the user clicks 'Ok' OR 'Cancel' it logs the user out. How can i prevent the logout view being called when the user clicks 'Cancel'?

views.py

def logout(request):
    if "user_info" in request.session:
        del request.session["user_info"]
    #redirect to login so the user can log back in
    return redirect("login")

script.js

function logout_popup() {
    if (confirm("Are you sure?")) {
        window.location.reload()
    }
}

base.html

<li onclick="logout_popup()" id="logout-tab"><a href="{% url 'logout' %}">Logout</a></li>

Solution

  • Try to move the onclick to the a tag:

    <li id="logout-tab"><a onclick="logout_popup(event)" href="{% url 'logout' %}">Logout</a></li>
    

    and the script:

    function logout_popup(e) {
        if (confirm("Are you sure?")) {
            window.location.reload()
        } else {
            e.preventDefault()
        }
    }