본문 바로가기

개발일지/TIL

TIL 23-04-06

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