Reputation: 11603
I want to add a logout button to my bootstrap navbar but it doesn't look right.
{# template.html #}
<nav class="navbar navbar-light">
<div class="container">
<div class="navbar-expand">
<ul class="navbar-nav mr-auto">
{% if user.is_authenticated %}
<li class="nav-item">
<a href="#" class="nav-link">{{ user.get_username }}</a>
</li>
<form class="form-inline nav-item" action="{% url 'account_logout' %}" method="POST">
{% csrf_token %}
<button type="submit" class="btn btn-info">Log out</button>
</form>
{% else %}
<li class="nav-item">
<a class="nav-link" href="{% url 'account_login' %}">Log in</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'account_signup' %}">Sign up</a>
</li>
{% endif %}
</ul>
</div>
</div>
</nav>
is there any way to make the button look like a bootstrap nav-link
? If not, how do I make it an anchor that will POST to Django's logout endpoint?
Upvotes: 4
Views: 2064
Reputation: 87
This should work
<li class="nav-item">
<a class="nav-link" href="#"
onClick="document.getElementById('logoutform').submit()">
Logout
</a>
</li>
<form id="logoutform" method="POST" action="{% url 'account_logout' %}">
{% csrf_token %}
<input type="hidden">
</form>
Upvotes: 5
Reputation: 8077
You don't need a form. Simply replace the form with this:
<a href="{% url 'account_logout' %}" class="nav-link">Logout</a>
Upvotes: 2