03_Web

[Django]로그인 기능 구현

chuu_travel 2025. 5. 23. 16:27
728x90
로그인 기능 구현

 

 

book/urls.py
from django.urls import path
from book import views

app_name = "book"
urlpatterns = [
    ...
    path("recmdbook/", views.recommended_book, name="recommended_book"),
    ...
]

 

 

users/urls.py
from django.urls import path
from users import views

app_name = "users"
urlpatterns = [
    path("login/", views.login_view, name="login"),
    path("signup/", views.signup_view, name="signup")
]

 

 

users/views.py
from django.shortcuts import render, redirect
from users.forms import LoginForm
from users.forms import SignupForm
from django.contrib.auth.models import User
from book.models import Favor
from django.contrib.auth import authenticate, login, logout

# Create your views here.
# 로그인
def login_view(request):
    # 기로그인 유저의 경우 추천도서목록으로 이동
    if request.user.is_authenticated:
        return redirect("book:recommended_book")
    if request.method == "POST":
        form = LoginForm(data = request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            password = form.cleaned_data["password"]
            user = authenticate(username=username, password=password)
            if user:
                login(request, user)
                return redirect("book:recommended_book")
            else:
                form.add_error(None, "User information incorrect.")
        context = {"form" : form}
        return render(request, "users/login.html", context)
    else:
        form = LoginForm()
        context = {"form" : form}
        return render(request, "users/login.html", context)

 

 

book/views.py
from django.shortcuts import render, redirect, get_object_or_404
from book.models import BookInfo
from django.contrib.auth.models import User

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from book.forms import ReviewForm
from book.models import Review

...

# 추천도서목록
def recommended_book(request):
    # 요청에 포함된 사용자가 로그인하지 않은 경우
    if not request.user.is_authenticated:
        # /users/login/ URL 로 리다이렉트
        return redirect("users:login")
      ...
    return render(request, "book/recommended_book.html", context)
...
728x90