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
'03_Web' 카테고리의 다른 글
| [Django]부트스트랩(Bootstrap)을 활용한 form디자인 (1) | 2025.05.27 |
|---|---|
| 무료아이콘 웹에 적용하기(FONT AWESOME) (0) | 2025.05.27 |
| [Django]Paginator를 활용한 페이징(paging) (3) | 2025.05.22 |
| [Django]장고 템플릿 태그 주석 다는법 (0) | 2025.05.22 |
| [Django] 업로드한 사진을 화면에 표시하는 방법 (2) | 2025.05.22 |