urls.py-->경로 설정
path('login/', LoginView.as_view(template_name="accountapp/login.html"), name="login"),
path('logout/', LogoutView.as_view(), name="logout"),
-django에서 기본 제공하는 LoginView와 LogoutView를 가져와서 사용한다. 그래서 urls.py에 기입한다.
따라서 view.py를 따로 작성할 필요는 없다!
-LoginView.as_view(template_name="accountapp/login.html")
괄호에 template_name을 적고 경로를 작성한다. html과 연동하기 위한 작업이다
-class based view에서는 url상에서 .as_view()를 붙여야 한다!
-login.html
{% 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}}을 통해 기본 제공되는 형식을 html에 넣는다
-form의 action에 아무것도 기입하지 않았는데 로그인이 작동한다. 아마LoginView.as_view(template_name="accountapp/login.html") 코드 때문에 자동으로 적용되어서 그러한 거 같다
header.html(머리 부분 base)
-->상단 바의 목록 칸 div 안에 작성한 코드
{% 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 %}
-if문과 else문을 작성하여 로그인에 성공하여 사용자가 인증되었을 때와 로그인을 하지 않아 인증이 안되었을 경우 각각 목록에 다른 것이 보이도록 html에 코드를 작성하였다.
-?next={{ request.path }}
이 코드는 로그인이나 로그아웃이 성공할 시 이전 페이지로 이동하는 기능을 갖는 코드이다.
next를 인자로 받아서 다음에 이동할 path를 미리 저장하고 성공하면 그 경로로 이동하는 것이다.
그 경로가 이전 페이지이다.
pinterest 앱 안의 settings.py에 redirect url 설정하기
-reverse_lazy
reverse와 reverse_lazy는 일일이 url을 외워서 기입하는 하드 코딩을 대신해주는 기능이 있다
즉 경로만 작성하면 알아서 url까지 처리해주는 것이다. 따라서 url이 바뀌어도 코드를 따로 수정할 필요 없다
-redirect url을 설정해두면 로그인이나 로그아웃 성공시 이동할 지점이 일관적이다
DetailView 마이페이지 구현 (0) | 2021.08.13 |
---|---|
Bootstrap 이용한 form 디자인 정리 (0) | 2021.08.13 |
회원가입 구현 (0) | 2021.07.26 |
DB 정보 접근 및 장고 템플릿 내 for loop (0) | 2021.07.22 |
텍스트 작성 내용 보이기 (17강) (0) | 2021.07.19 |
댓글 영역