해리의 데브로그

Django 22 - 이미지 다루기 1(폼셋, 트렌젝션)

|

Django 21 - M:N 관계설정 (좋아요 기능) / 개인 페이지 만들기

|

Django 20 - 댓글 CRUD (2)

|

2019년 6월 3주차 TIL

|

2019-06-10

  • 댓글 기능 관련 복습(Create, Read)을 이어서 진행하였음.
  • 모델폼을 사용하면, 구현한 모델을 활용하여 html 파일에서 그대로 사용할 수 있는 이점이 있는데, input 태그에 클래스를 추가하는 등, html 문서에서는 손쉽게 할 수 있었던 작업이, 모델 폼을 쓸 경우에는 모델폼내에 오버라이딩을 통해 다시 속성값을 정의해줘야하는 부수적인 일이 필요하다.
  • 관련 내용을 정리하다보니, 내가 배운 방법이 아니더라도 다른 방법을 통해서 속성값을 부여할 수 있다는 것을 알게 되었다. 오버라이딩 하는 코드가 손에 익지 않아 몇번을 쓰고 지우고를 반복했는데, 새로운 방법이 되려 더 쉽고 직관적으로 이해가 되는 듯 하다. 무조건 배운대로 이 방법만 된다보다는, 좀 더 유연하게 생각해보려 노력하자
#방법 1
class CommentForm(forms.ModelForm):
    content = forms.CharField(label='', widget=forms.TextInput({attrs={'class':'form-control', 'placeholder': '댓글을 작성하세요.'}}))
    class Meta:
        model = Comment
        fields = ['content',]
 
#방법 2
class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['content']
        widgets = {
            'content': forms.TextInput(attrs={'placeholder':'댓글을 입력하세요'})
        }

2019-06-11

  • Django 댓글 CRUD 중 Update와 Delete에 대해 복습을 진행하였음.
  • 전반적인 메커니즘은 기본 CRUD와 거의 유사했으며, Update의 경우, 이전에 자바스크립트를 이용하여 다른 페이지로 넘기지 않고 동적으로 구현하려다가 시간적 여유가 없어서 마무리 못지었던것이 기억난다. 이후에 자바스크립트 복습을 진행할 때 다시한번 코드를 짜봐야겠다.
  • 다시 코드를 작성하면서 알게된건데, post_idcomment_id 를 둘다 variable routing으로 안넘겨도, 댓글에 대한 Update와 Delete 기능이 제대로 작동하는 듯 하다. post_id가 필수라고 생각했는데, 굳이 post_id가 없더라도 comment 인스턴스 객체 자체가 고유 id값을 갖고있기 때문에, comment_id 값만 있어도 충분한 듯하다.

2019-06-12

  • 수업시간에 전공자반과 함께 조를 짜서 아이디어 해커톤을 진행하였음. 확실히 전공자들이 깊은 도메인 지식과 문제를 접근하는 방식에 대한 이해도가 높은 것을 알 수 있었다. 많은 자극이 되었음!
  • Google Search Console 에서 블로그에 모바일 사용 편의성에 대한 문제가 발생했다는 메일을 받게되어 블로그 템플릿 코드를 살짝 다시 다듬었다. 처음 이 템플릿을 받아와 코드 내용도 모른채 깃허브 블로그를 해보겠다고 며칠을 헤멧었는데, 몇개월이 지난 지금 다시 코드를 살펴보니 많은 부분에 대한 이해도가 높아짐을 알 수 있었다. 조만간 코드를 좀 더 분석해서 더 많은 기능을 넣어봐야겠다.

2019-06-13

  • 좋아요 기능을 통해 M:N 관계에 대한 복습을 진행함. 다대다 관계 설정시에는 ManyToManyField 를 사용
    • 첫번째 인자로는 연결하는 모델 클래스를 입력
    • 두번째 인자로는 연결되는 모델 클래스에서 접근할때 쓰는 naming을 설정함(related_name)
  • Django에서 유저모델을 불러올 때, get_user_modelsettings.AUTH_USER_MODEL 를 쓰는 경우가 있는데, 미세한 차이가 있음을 알 수 있었음.
    • get_user_model : settings 안의 auth의 user 모델을 불러옴. 사용을 하기 위해 import
    • settings.AUTH_USER_MODEL은 모델 클래스를 반환하는 것이 아니라 모델 명을 string 형태로 반환. 따라서, settings.AUTH_USER_MODEL 로 views.py 내 유저모델을 부를 경우, ValueError가 발생함. (외래키로 유저모델을 불러올땐 Django 공식문서에 따르면, 이 방법을 권장함)

2019-06-16

  • 이미지폼셋을 이용하여 하나의 모델폼으로 여러장의 사진을 동시에 올리는 코드에 대해 공부하였음.
  • inlineformset_factory 메서드를 이용하여 외래키를 통해 관련객체를 작업하는 경우를 단순화시킴. (이미지 모델폼을 갖고와 폼셋으로 만들어 여러 이미지를 동시에 올리게끔 해줌)
  • formset 에 대하여 아주 얕게, 기본적인 개념만 배우고 넘어갔는데, modelformsetinlineformset 은 구체적으로 어떻게 다른지, 또 factory method에 다양한 키워드 인자에 대해서도 시간내서 상세히 공부해봐야겠다.
  • transaction: 쪼개질수 없는 업무처리 단위. 데이터 베이스 충돌을 해결하기 우해서 여러개의 프로세스를 묶어서 하나의 작업으로 처리하는 기법을 의미함.
    • Transaction의 원자성을 이용한 코드로, 장고의 비동기 동작으로 인해 발생할 수 있는 에러상황을 방지하는 부분을 살펴보았음. - ` with transaction.atomic()`

Django 19 - 1:N 관계설정 / 댓글 CRUD (1)

|