실습 설명
1. URL '' 아래 간단한 홈페이지를 만들어 주세요. 홈페이지는 아래 조건을 충족해야 합니다.
- 로그인 상태에 따라 로그인/회원가입/로그아웃 링크가 있다.
- 로그인이 돼있는 상태라면 로그인된 유저의 이메일이 나온다.
홈페이지에 있는 문구는 여러분이 자유롭게 작성하시면 됩니다.
2. 회원가입이나 로그인을 하면 홈페이지로 리다이렉트해 주세요.
3. 회원가입 페이지(/signup/)에서 아래 정보를 가진 유저를 만들어 주세요
- Username: user1
- Email: user1@example.com
- Password: django123
4. 로그아웃 링크를 클릭하면 바로 로그아웃이 되도록 바꿔 주세요.
풀이
1. URL '' 아래 간단한 홈페이지를 만들어준다. 홈페이지는 아래 조건을 충족해야한다.
로그인 상태에 따라 로그인/회원가입/로그아웃 링크가 있다.
로그인이 돼있는 상태라면 로그인된 유저의 이메일이 나온다.
홈페이지를 만들려면 URL, 뷰, 템플릿을 만들어 줘야한다. 하나씩 만들어 보자
podomarket_project/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('podomarket.urls')),
path('', include('allauth.urls')),
]
프로젝트 URL 파일에 podomarket 앱의 URL을 추가해 주고, podomarket 앱에 URL 파일을 만든 다음, 홈페이지에 대한 URL 패턴을 추가해준다.
podomarket/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
URL 네임은 index로 지었고, views.py 파일의 index 뷰에 연결해주었다.
podomarket/views.py
from django.shortcuts import render
def index(request):
return render(request, 'podomarket/index.html')
뷰에서는 다른 로직을 추가할 필요 없이 템플릿만 렌더해 주면 된다.
podomarket 앱 폴더 안에 templates/podomarket 구조로 폴더를 만들고, 안에 홈페이지에 사용할 index.html 파일을 만들어 주세요. 홈페이지에 들어가는 내용은 자유인데 상황에 맞는 링크와, 로그인이 돼있는 경우 유저의 이메일이 나와야 한다. 예를 들어 아래처럼 만들어보면,
podomarket/index.html
<navbar>
{% if user.is_authenticated %}
<a href="{% url 'account_logout' %}">로그아웃</a>
{% else %}
<a href="{% url 'account_login' %}">로그인</a>
<a href="{% url 'account_signup' %}">회원가입</a>
{% endif %}
</navbar>
<h2>포도마켓에 오신걸 환영합니다!</h2>
{% if user.is_authenticated %}
<p>안녕하세요 {{ user }}님, 회원님의 이메일은 {{ user.email }}입니다.</p>
{% else %}
<p>로그아웃된 상태입니다.</p>
{% endif %}
로그인 여부를 확인해야 하는데, 로그인 여부는 user.is_authenticated를 통해 확인할 수 있다. 로그인이 돼있으면 로그아웃 링크를 보여주고, 로그아웃이 돼있으면 로그인, 회원가입 링크를 보여주면 된다.
그리고 링크의 href 속성에는 allauth URL 네임을 넣어주면 되는데 URL 네임은 링크에서 확인하실 수 있다.
유저 모델의 __str__ 메소드는 기본적으로 username 필드를 리턴하기 때문에 템플릿에 {{ user }} 이렇게 쓰면 유저의 유저네임으로 바뀐다. 유저의 이메일을 보여주려면 .email로 이메일 필드에 접근하면 된다.
2. 회원가입이나 로그인을 하면 홈페이지로 리다이렉트
이건 간단한 세팅 몇 줄로 해결할 수 있다.
podomarket_project/settings.py
# Auth settings
...
ACCOUNT_SIGNUP_REDIRECT_URL = 'index'
LOGIN_REDIRECT_URL = 'index'
첫째 줄은 회원가입 리다이렉트 URL을 설정해 주고 둘째 줄은 로그인 리다이렉트 URL을 설정.
참고로 이런 세팅들을 외울 필요는 없다.
3. 회원가입 페이지(/signup/)에서 유저를 만들어준다.
서버를 켜고 회원가입 페이지(/signup/)로 가서 회원가입을 해준다.
4. 로그아웃 링크를 클릭하면 바로 로그아웃이 되도록 바꿔준다.
이것도 세팅을 추가해 준다.
podomarket_project/settings.py
# Auth settings
...
ACCOUNT_LOGOUT_ON_GET = True
출처 코드잇
'BackEnd > Django 유저 기능 구현하기' 카테고리의 다른 글
[유저 기능과 django-allauth 패키지] 포도마켓: 필드추가하기 (0) | 2023.04.11 |
---|---|
[유저 기능과 django-allauth 패키지] 포도마켓: 이메일 로그인, 로그인 기억하기 (0) | 2023.04.11 |
[유저 기능과 django-allauth 패키지] 포도마켓: 프로젝트 시작하기 (0) | 2023.04.06 |
[유저 기능과 django-allauth 패키지] django-allauth, 유저 모델 퀴즈 (0) | 2023.04.06 |
[유저 기능과 django-allauth 패키지] 패키지 vs 앱 (0) | 2023.04.06 |