역참조 공부가 필요하다.

게시글 중에 좋아요를 누른 아이디 중 내 아이디가 있는 것을 가져와야한다.

    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%}
 
숙제
  1. 지금 회원가입은 데이터베이스에 동일한 사용자가 있어도 가입이 됩니다.
사용자는 유일하게 만들어져야 하기 때문에 회원가입 시에 이미 있는 사용자 인지 확인하는 코드를 작성 해 주세요
if UserModel.objects.filter(username=username): 
    return HttpResponse('존재하는 username 입니다.')
 
  1. 사용자가 로그인을 성공 한 후에 HttpResponse를 사용해서 화면에 '사용자 이름'을 출력 해 주세요
 
return HttpResponse(username)

+ Recent posts