역참조 공부가 필요하다.
게시글 중에 좋아요를 누른 아이디 중 내 아이디가 있는 것을 가져와야한다.
def get(self,request):
user = request.user
article = user.hearts.all()
serializer = ArticlesSerializer(article, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
기능별로 앱 만들기
user 앱 만들기 : python manage.py startapp user
tweet 앱 만들기 : python manage.py startapp tweet
setting.py에 user, tweet 앱 추가하기 : 'user', 'tweet',
DB 연결
setting.py에 DATABASES 부분을 확인, 장고 실행 후 파일 생성 확인
user 모델 만들기
코드 스니펫 복붙
DB에 변경사항 알려주기 : python manage.py makemigrations
DB에 변경사항 반영하기 : python manage.py migrate
DB에 테이블이 생성 되었는지 확인
장고 admin 기능 사용
관리자 계정 만들기 : python manage.py createsuperuser
관리자 페이지에 User 모델 등록 : admin.site.register(UserModel)
Tweet 모델 만들기
코드 스니펫 복붙
DB에 변경사항 알려주기 : python manage.py makemigrations
DB에 변경사항 반영하기 : python manage.py migrate
DB에 테이블이 생성 되었는지 확인
장고 admin 기능 사용
관리자 페이지에 Tweet 모델 등록 : admin.site.register(TweetModel)
base.html 복붙
user폴더 만들기.
폴더 안에 signup.html 복붙.
폴더 안에 signin.html 복붙.
템플릿 언어 : html에 파이썬 문법을 사용하거나 템플릿을 확장할 때 사용.
signup 과 signin 연결하기
유저앱의 urls.py 사용하기 url='' : path('', include('user.urls'))
유저앱 view.py 복붙.
유저앱 urls.py 복붙.
GET과 POST
인터넷으로 통신하는 방법들.
GET : 값을 읽어 올 때
POST : 값을 전해 줄 때
회원가입 기능 만들기
def sign_up_view(request):
if request.method == 'GET': # GET 메서드로 요청이 들어 올 경우
return render(request, 'user/signup.html')
elif request.method == 'POST': # POST 메서드로 요청이 들어 올 경우
username = request.POST.get('username', None)
password = request.POST.get('password', None)
password2 = request.POST.get('password2', None)
bio = request.POST.get('bio', None)
if UserModel.objects.filter(username=username):
return HttpResponse('존재하는 username 입니다.')
if password != password2:
return render(request, 'user/signup.html')
else:
new_user = UserModel()
new_user.username = username
new_user.password = password
new_user.bio = bio
new_user.save()
return redirect('/sign-in')
회원가입 html 수정
form : 화면에 있는 데이터를 서버로 전송 할 때 사용하는 태그
post 방식으로 회원가입 url로 보냄 : <form class="form-area" method="POST" action="/sign-up/">
csrf_token 사용 : {%csrf_token%}
로그인 기능 만들기
세션 : 같은 사람이 요청을 하는지 확인 할 수 있도록 도와줌. 사용자의 정보를 저장 할 수 있다. 정도로 생각한다.
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
me = UserModel.objects.get(username=username)
if me.password == password:
request.session['user'] = me.username
return HttpResponse(username)
else:
return redirect('/sign-in')
elif request.method == 'GET':
return render(request, 'user/signin.html')
로그인 html 수정
post 방식으로 회원가입 url로 보냄 : <form class="form-area" method="POST" action="/sign-in/">
csrf_token 사용 : {%csrf_token%}
숙제
-
지금 회원가입은 데이터베이스에 동일한 사용자가 있어도 가입이 됩니다.
사용자는 유일하게 만들어져야 하기 때문에 회원가입 시에 이미 있는 사용자 인지 확인하는 코드를 작성 해 주세요
if UserModel.objects.filter(username=username):
return HttpResponse('존재하는 username 입니다.')
-
사용자가 로그인을 성공 한 후에 HttpResponse를 사용해서 화면에 '사용자 이름'을 출력 해 주세요
return HttpResponse(username)
'TIL' 카테고리의 다른 글
[60일차] TIL : 패스워드 재설정 이메일 과 장고 기초 4주차. (0) | 2023.05.11 |
---|---|
[59일차] TIL : 이메일 인증과 장고 기초 3주차. (0) | 2023.05.10 |
[57일차] TIL : 팀 프로젝트 시작, 장고 기초 시작 1주차 (0) | 2023.05.08 |
[53일차] TIL : AWS 공부하고, GIT 팀원끼리 테스트! (0) | 2023.05.04 |
[52일차] TIL : AWS, 알고리즘 풀기 (0) | 2023.05.03 |