urlpatterns = [
path('login/',LoginView.as_view(template_name='accountapp/login.html'),name='login'),
path('logout/',LogoutView.as_view(),name='logout'),
]
{% extends 'base.html' %}
{% block content %}
<div style="text-align: center">
<div>
<h4>Login</h4>
</div>
<div>
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" class="btn btn-primary">
</form>
</div>
</div>
{% endblock %}
{{form}} : loginView에서 기본 제공


header.html
<div>
<span>nav1</span>
<span>nav2</span>
<span>nav3</span>
{% if not user.is_authenticated %}
<a href="{% url 'accountapp:login' %}?next={{ request.path }}">
<span>login</span>
</a>
{% else %}
<a href="{% url 'accountapp:logout' %}?next={{ request.path }}">
<span>logout</span>
</a>
{% endif %}
</div>
?next={{request.path}} : 지금 존재하는 url을 전달해서 다시 돌아올수 있게 합니다.
😭만약 account/login url로 바로이동시 next parameter가 없으므로 에러가 뜹니다.
이것을 해결하기위해 settings.py에 있는 LOGIN_REDIRECT_URL 를 설정합니다.
LOGIN_REDIRECT_URL = reverse_lazy('accountapp:hello_world')
LOGIN_REDIRECT_URL = reverse_lazy('accountapp:login')