로그인이 완료된 사용자에게는
sign-up
, sign-in
페이지가 뜨지 않도록.
로그인 한 사용자가 있는지 판별해주는 조건문을
페이지를 보여주는 곳곳마다 넣는다.
# user/views.py
from django.shortcuts import render, redirect
from .models import UserModel
# from django.http import HttpResponse
from django.contrib.auth import get_user_model
from django.contrib import auth
# Create your views here.
def sign_up_view(request):
if request.method == 'GET':
user = request.user.is_authenticated # 인증된 사용자를 user에 저장한다.
if user:
return redirect('/') # 기본 페이지로 리다이렉트
else:
return render(request, 'user/signup.html')
return redirect('/')
/로 한 이유는
/를 담당하는 함수
tweet 앱 > views.py > home 함수
from django.shortcuts import render, redirect
# Create your views here.
def home(request): # 로그인이 된 사람만 보여주기
user = request.user.is_authenticated # 유저가 로그인/인증이 되어 있는지
if user:
return redirect('/tweet')
else:
return redirect('/sign-in')
/로 redirect를 하면
user가 있을 경우 /tweet url로,
없을 경우 /sign-in 로그인 url로 보내주는 기능.
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
me = auth.authenticate(request, username=username, password=password)
if me is not None:
auth.login(request, me)
return redirect('/') # /라는 기본 url로 연결.
else:
return redirect('/login')
elif request.method == 'GET': # 화면을 보여줄 때니까 get
user = request.user.is_authenticated
if user:
return redirect('/')
else:
return render(request, 'user/signin.html')