본문 바로가기
AI 웹개발반/Python, Django

[Django] 04 앱 기능 추가 GET, POST, 세션

by 째깍단 2023. 4. 4.

1) 더 자세한 기능들 추가해보기

로그인, 회원가입 등의 기능을 위해 적절한 위치에 파일을 넣어야한다.

 

templates > base.html    : 유저의 템플릿을 만들 것이고,

templates > user(폴더생성) > signin.html, signin.html     : signin/up으로 로그인 회원가입 기능을 구현해볼 수 있다

위치를 잘 기억하기!

 

하위 html에 다른 html 형식을 받아와 추가할 수도 있다.

{% %} #장고 문법 : 다른 html형식을 받아오겠다는 표현

{% extends 'base.html' %} #base파일을 확장해서 signin파일으 확장해나가겠다
{% block title %}
로그인
{% endblock %}
{% block content %}

 

 

각 앱의url는 관리하기 좋도록 해당 앱 폴더에 urls.py에 넣어주는데

가장 상위의 urls에도 include를 통해 추가해주어야 전체적인 관리를 할 수 있다.

path('',include('user.urls')), #상위urls.py에 추가해주기

 

사용자 요청==> 전체파일 => urls에서 해당 url을 부름 => url정보를 불러와서 전달.. 하는 로직이라고 보면된다.

 

 

 

 

2)GET 과 POST

 

 

<form> : 화면의 데이터를 서버에 전송할때 사용하는 태그

<form class="form-area" method="post" action="/sign-up/"> #method action 순서는 상관없음!

{% csrf_token %} : 회원가입시에는 보안을 추가해주어야합니다 뿌듯^.^


method  는 어떤 기능을 사용할 것인지,
action   은 어떤 url에서 진행할 것인지 "/양끝/" 빼먹지 않기

 

= 그러니까  회원가입 form에 정보를 넣으면 post를 사용해 (+보안) 저장하겠다. 는 내용

 

 

 

view.py에 입력할 내용에 대한 코드를 작성해준다.

username = request.POST.get('username',None)

유저네임(변수) = 요청.포스트기능으로.가져온다(데이터'유저네임',없으면 None으로)

추가한 사용자 데이터가 db로 들어갈 수 있도록 ..!

 

 

회원가입시 하던 루틴을 생각해보면 password 2개입력하고 확인하던 과정을 if문으로 작성 가능!(우왕)

if password != password2 :
     # render로 새창띄워주기, 경고문띄워주기 등의 기능을 넣어주자.
else:
	new_user = UserModel()
	new_user.username = username
	#필요내용 더 추가
	
	new_user.save() #저장

	redirect('url') #어떤 동작이 완료되었을때 url페이지로 바로 이동

 

 

 

 

3)로그인을 위한 기능 넣기.

세션 : 사용자의 정보를 저장하는 공간!

 

 

 

HttpResponse로 화면에 글자를 띄워준다.

return HttpResponse('로그인 성공!') #로그인 성공시 글씨가 뜨도록

 

sign-up에서 했던 것처럼 username, password를 입력하는 요청을하고

등록된 user가 있는지 아래와 같이 확인한다.

 

me = UserModel.objects.get(username=username)
   #UserModel.데이터객체.get(데이터name = 입력값) 확인

if me.password == password: #패스워드 확인
	request.session['user'] = me.username #입력받은 유저네임과 데이터유저네임이 같으면
	return HttpResponse('로그인 성공!')
else:
	return redirect('/sign-in')