[CrazyForm] 강의 사이트 개발 프로젝트

이승아·2023년 5월 2일
0


  • 온라인 강의 사이트: Crazy Form
  • 개발기간 : 20203.3.3 ~ 2023.03.29
  • Front-End : 3명
  • Back-End : 3명

DB Modeling

Skill Stack

  • Frond-end : react , react-query, axios, react-hook-form , react-player , scss, chakra-UI

  • Back-end : django, nginx ,certbot, ubuntu, mysql, ObjectStorage

Github

https://github.com/leeseung-ah

호스팅 페이지

https://www.crazyform.shop/

구현기능

  • 메인페이지
  • 로그인/회원가입
  • 마이페이지
  • 강의 검색/카테고리
  • 강의 상세페이지
  • 댓글/평점 남기기

내가 담당한 기능

  • API 설계

cart models.py

class numCart(CommonModel):
    lecture = models.ForeignKey(
        "lectures.Lecture",
        on_delete=models.CASCADE,
        related_name="cart",
        null=True,
    )

    user = models.OneToOneField(
        "users.User",
        on_delete=models.CASCADE,
        related_name="cart",
        blank=True,
        null=True,
    )

    class Meta:
        verbose_name_plural = "Cart"

cart serializers.py

class CartView(APIView):
    def get(self, request):
        all_numCart = numCart.objects.all()
        serializer = serializers.CartSerializer(all_numCart, many=True)
        return Response(serializer.data)

    def put(self, request):
        user = request.user
        serializer = serializers.ActivitCartSerializereSerializer(
            user,
            data=request.data,
            partial=True,
            # isInstructor =true 보내주기 요청
        )
        if serializer.is_valid():
            user = serializer.save()
            serializer = serializers.CartSerializer(user)
            return Response(serializer.data)
        else:
            return Response(serializer.errors)
  • 비밀번호 찾기

settings.py

# 메일을 보내는 호스트 서버
EMAIL_HOST = "smtp.gmail.com"

# ENAIL_HOST에 정의된 SMTP 서버가 사용하는 포트 (587: TLS/STARTTLS용 포트)
EMAIL_PORT = "587"

EMAIL_HOST_USER = "발신할 이메일 주소 "

# 발신할 이메일 비밀번호 
EMAIL_HOST_PASSWORD = (2단계 인증일경우 앱 비밀번호)

# TLS 보안 방법 (SMPT 서버와 통신할 떄 TLS (secure) connection 을 사용할지 말지 여부)
EMAIL_USE_TLS = True

# 사이트와 a관련한 자동응답을 받을 이메일 주소
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

프로젝트 settings.py 이메일 서버를 설정.
EMAIL_HOST_PASSWORD에는 2단계 인증 설정 발급받은 앱 비밀번호를 추가.

urls.py


  path("password/", include("django.contrib.auth.urls")),

서버를 실행 시킨 후 password_reset로 이동하면

django에서 제공 하는 비밀번호 초기화 페이지가 뜸.

만족하고 있는 부분

  • 프로젝트에 적용하지 못 했지만 원하는 기능구현에 성공 했다는 점

  • 인증 링크를 보내는 방법에 대해서 많이 찾아보고 시도해 보았기 때문에 이전 보다는 배우고 알게 된 것이 많아진 것 같다

  • github의 사용방법에 대해 어느정도 이해하고 편의성을 알게 됨

  • 이번 프로젝트를 진행 하면서 공부가 되었다는게 개인적인 생각임

개인적으로 아쉬운 부분

  • 몇 가지의 방법 중 crispy-forms ( 장고 양식의 렌더링 동작을 제어 할 수있는 폼 레이아웃 )을 이용해 코드를 작성한 블로그를 발견 했고 해당 블로그를 참고해 시도해 보았으나 부트스트랩과 같이 적용할 수 있는 스타일이 제한적이였음

  • 인증링크와 함께 완성된 패스워드 리셋 페이지를 보내고 싶었으나 시간 부족으로 실패했음

  • 맡은 부분이 적고 프로젝트에 관해서 팀원들과의 소통에서 소극적이였던 것 같음

불편한 부분에 대한 해결책

  • crispy-forms 외에도 다른 방법으로 이메일 인증 링크를 보낼 수 있는 방법이 있는지 찾아보기
  • Django에 대해서 더 공부

0개의 댓글