2019년 6월 3주차 TIL
10 Jun 2019 | TIL2019-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_id
와comment_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_model
와settings.AUTH_USER_MODEL
를 쓰는 경우가 있는데, 미세한 차이가 있음을 알 수 있었음.get_user_model
: settings 안의 auth의 user 모델을 불러옴. 사용을 하기 위해 importsettings.AUTH_USER_MODEL
은 모델 클래스를 반환하는 것이 아니라 모델 명을 string 형태로 반환. 따라서,settings.AUTH_USER_MODEL
로 views.py 내 유저모델을 부를 경우,ValueError
가 발생함. (외래키로 유저모델을 불러올땐 Django 공식문서에 따르면, 이 방법을 권장함)
2019-06-16
- 이미지폼셋을 이용하여 하나의 모델폼으로 여러장의 사진을 동시에 올리는 코드에 대해 공부하였음.
inlineformset_factory
메서드를 이용하여 외래키를 통해 관련객체를 작업하는 경우를 단순화시킴. (이미지 모델폼을 갖고와 폼셋으로 만들어 여러 이미지를 동시에 올리게끔 해줌)formset
에 대하여 아주 얕게, 기본적인 개념만 배우고 넘어갔는데,modelformset
과inlineformset
은 구체적으로 어떻게 다른지, 또 factory method에 다양한 키워드 인자에 대해서도 시간내서 상세히 공부해봐야겠다.- transaction: 쪼개질수 없는 업무처리 단위. 데이터 베이스 충돌을 해결하기 우해서 여러개의 프로세스를 묶어서 하나의 작업으로 처리하는 기법을 의미함.
- Transaction의 원자성을 이용한 코드로, 장고의 비동기 동작으로 인해 발생할 수 있는 에러상황을 방지하는 부분을 살펴보았음. - ` with transaction.atomic()`
Comments