django 14 로그인된 사용자

Grace Goh·2022년 10월 10일
0

Django

목록 보기
15/32

로그인이 완료된 사용자에게는
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')
profile
Español, Inglés, Coreano y Python

0개의 댓글