https://github.com/sdoram/sparta_project/tree/main/personal_Django_project_1
1. Django - 개인 과제
문제점
회원가입 기능 먹통
로그인 기능 구현 , 로그인 시 url 이동
로그아웃 기능 구현
시도해 본 것들
views.py
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.contrib.auth.decorators import login_required
from .forms import SignupForm
from django.views.decorators.csrf import csrf_exempt
# csrf_token 보안 토큰 무시
@csrf_exempt
def signup(request):
# 회원 가입 view
if request.method == "POST":
form = SignupForm(request.POST)
if form.is_valid():
form.save()
return redirect('/sign-in/')
else:
form = SignupForm()
# {'form': form} 의미가 뭘까
return render(request, 'accounts/signup.html', {'form': form})
def user_login(request):
# 로그인 view
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
# 유효성 검사
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect('/main/')
return HttpResponse('로그인 실패')
else:
return render(request, 'accounts/signin.html')
로그아웃은 내장된 기능으로 바로 해결이 됐는데 로그인 했을 때 이동 시키는 방법이 어려웠다.
urlpatterns = [
path('sign-up/', views.signup, name='sign-up'),
path('sign-in/', views.user_login, name='sign-in'),
path('logout/', views.logout, name='logout'),
path('main/', views.go_main, name='main'),
]
urls에서 main의 path를 열어주고
def go_main(request):
return render(request, 'erp/main.html')
views에서 render를 위한 함수를 따로 설정해서 해결했다. 원래 이렇게 쓰는건지 하나의 함수에서 해결이 가능한데 아직 못 찾은건지 모르겠다.
해결 방법
다른 코드들을 참고하면서 이해 안가는 부분은 최대한 지우고 작성했다.
알게 된 점
{{ form.as_table }}
Django 제공 Html 사용을 위한 코드
요청이 urls에서 views로 이동하고 views에서 알맞은 함수를 실행한뒤 return 값을 클라이언트에게 보여준다.
맞는 방법인지는 모르겠지만, 로그인에서 redirect('/main/')으로 링크를 갱신하고 이 urls를 go_main이라는 함수와 연결시켜서 그 함수의 return으로 render해서 다른 화면을 보여줬다.
'개발일지 > TIL' 카테고리의 다른 글
TIL 23-04-08 (0) | 2023.04.08 |
---|---|
TIL 23-04-07 (2) | 2023.04.07 |
TIL 23-04-05 (0) | 2023.04.05 |
TIL 23-04-04 (0) | 2023.04.04 |
TIL 23-04-03 (2) | 2023.04.03 |