728x90
반응형

오늘은 머신러닝 프로젝트 첫 날!

어제 드립다 자버려서 오늘 9시 전에 두시간 동안 인스타 클론코딩 이미지 구현해보고, html 화면에 연동시킬 때 나는 오류를 캠프 시간에 해결했다. 그리고 그대로 머신러닝 프로젝트에 적용해서 사진 기능을 구현했다.

연동 쪽은 다른 분 담당이라 따로 커밋을 하진 않았지만, 시험 삼아 연동까지 해봤는데 잘 되는 걸 확인해서 뿌듯했다.

Error during template rendering

  • 발생 이유 : url에서 변수를 요구하지 않는데 멋대로 넣어버림
  • 해결 : 주소 넘어갈 때 넘기던 인자 post_id 삭제
  • 깨달은 점 : 음…! 비슷한 로직은 복붙하는 게 편하긴 하지만 무지성으로 복붙하지 말고 구조를 생각하면서 복붙하자. (저 부분에 원래 request.user.id가 있던 코드를 복붙해서 사용했었다)에러 사진

Integrity error


  • 유저 정보를 요구하는 url로 넘기는데 따로 유저 정보를 저장하지 않아서 생긴 문제인 듯…?
  • 해결그래서 로그인한 사용자의 데이터를 게시글 모델에서 유저의 정보를 담고있는 필드에 저장했다. 하지만 어림도 없지. 이렇게 하니 바로 밑의 문제가 발생했다ㅜㅜㅜㅜ이런;

def upload_img(request):
    if request.method == 'GET' :
        return render(request, 'new_post.html')
    elif request.method == 'POST' :
        post = PostModel()
        post.content = request.POST.get('content')
        post.photo = request.FILES['photo']
        **post.author = request.user**
        post.save()
        return redirect('post:detail_post')

 

TypeError : ~~() got an unexpected keyword argument


  • 발생 이유 : url로 받은 파라메터를 함수에 안넣어줘서 생긴 에러 (정확히는 패러미터랑 이름이 안 맞았음 다른 오류 수정하는 과정에서 이것저것 건들여보다 일치시켜둔 게 안 맞아짐)
  • 해결 : 변수의 이름을 패러미터랑 동일하게 바꿔주었다.

TypeErrod at /경로


  • 발생 이유 : 습관적으로 for문 돌렸는데 생각해보니 id가 일치하는 특정 게시글 하나만 보내니까 당연히 이터러블이 아니었을 듯…
  • 해결 : html 파일에서 DTL을 사용해 for문 돌리는 부분 삭제

media 폴더 경로 문제


  • 발생 오류 : 에러 메시지가 따로 나온 건 아니지만 계속 사진 엑박이 떴다. 뭔가 사진을 띄우고는 있는 것 같은데, 그 사진을 못 찾고 있는 것 같았다.
  • 발생 이유 : 음. 경로가 잘못된 게 맞았다.
  • 해결밑에 코드를 post 앱의 urls.py에 적어서 오류가 발생한 거였다. 위 코드에서 MEDIA_URL의 경로를 post앱에 설정된 url에 맞게 수정해 주던가, 밑의 코드를 프로젝트 폴더의 ulrs.py에 적거나 둘 중 하나로 고치면 해결되는 일이었다. 나는 후자의 방법으로 고쳤다.
  • 음, 인스타 클론코딩 때 내가 구현하지 않은 기능들이랑, 팀원분이 장고가 아닌 Ajax로 구현한 이미지 업로드 기능이 도무지 감이 안 잡혀서 일요일에 각 잡고 혼자 처음부터 만들어 봤는데, 이 코드도 그것과 관련해 났었던 오류다. 이걸 해결하고 나니 오늘 본진이었던 머신러닝 프로젝트에서는 오류 한 번 없이 잘 됐다. 뭔가 인스타 클론코딩 때도 막연하게 이미지 받는 필드만 있으면 로직 비슷해서 괜찮을 거 같은데~싶었는데, 실제로도 잘 돼서 기분이 엄청 좋았다. 오류를 구글링으로 해결한 적은 있어도 기능 하나를 구글링만으로(기반 지식은 물론 있었지만) 해결한 건 처음이라, 뭔가 막연한 로직을 대하는 자세에 도움이 되는 경험을 한 거 같다.
#settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

#urls.py
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • 깨달은 점 : 게시글에 사진 띄우는 중에 urlpatterns를 작성해야 되니까 게시글 앱에다가 작성해야지~~라고 무지성으로 코드 작성했었는데 항상 나무를 보지 말고 숲을 볼 것!
  • 질문거리
  • 연동하면서 {{ post.photo.url }}로는 연동이 되는데 {{ post.photo.path }}로는 연동이 안 되는 현상을 발견했다. 절대경로와 상대경로의 차이인 것 같은데, 내일 질문해 봐야겠담.

 

Feeling


장고의 ImageField를 이용한 이미지 구현은 직간접적으로 아예 처음이라 오류가 나고 한참 헤맸어도 재밌었다. 결국 났었던 오류가 경로 문제 하나라서 각오하고 있던 오류보다 수가 적기도 했고. 음… 다른 오류들은 부주의해서 난 오류일까, 안다고 생각했던 게 사실 몰랐던 걸까. 혼자 해결한 오류는 어떻게 봐야 할지가 애매하다. 어쨌든 전자든 후자든 반성해야 하는 건 똑같지만.

인스타 클론코딩 혼자서 처음부터 해보길 잘했다. 머신러닝 프로젝트에 큰 도움이 되고 있다. 아직 다 끝내지 못했는데도 이 정도로 도움이 된다니, 오늘 목표량이랑 할당량을 다 채워서 시간이 좀 남았는데 내일은 시간이 남으면 인스타 클론코딩 부분을 계속 이어나가 봐야겠다. 코멘트랑 팔로우 팔로잉 기능 정도 구현하면 필수기능은 끝날 거 같고, 좋아요도 해보고 싶다. 좋아요는 아마 머신러닝 프로젝트 끝날때쯤…? 인스타 클론코딩에만 매달릴 수 있는 게 아닌지라..

반응형

'Programming > TIL and WIL' 카테고리의 다른 글

💖221018 Today I Learned💖  (0) 2022.10.18
저번주 WIL  (0) 2022.10.18
221016 TIL - ImproperlyConfigured  (0) 2022.10.18
221015 TIL - 머신러닝 네모 그려주는 좌표  (0) 2022.10.18
221013 Today I Learned (TIL)  (1) 2022.10.13

+ Recent posts