Python

A collection of 31 posts
Django - modelform 사용자 필드 추가 - 필드 순서 변경 방법
Django

Django - modelform 사용자 필드 추가 - 필드 순서 변경 방법

그냥 model 에 사용된 필드만 쓰면 별 고민이 없는데, 꼭 쓰다보면 사용자 정의 필드를 넣어줘야 할 때가 있다. 이때마다 생각이 안나서 일단 정리 필드를 그냥 변수 정의하듯이 정의해서 사용하면 된다. class ShippingProductUpdateForm(BSModalModelForm): title = "" update_firmware_version = forms.CharField(label=_("*업데이트버전"), widget=forms.TextInput(attrs={"readonly": True})) class Meta: model
2 min read
Django - modal 창에 form error 출력
develop

Django - modal 창에 form error 출력

Django model forms (https://github.com/trco/django-bootstrap-modal-forms/blob/master/README.rst) 이용하고 있는데, 모달 창이 뜬 상태에서 form submit 을 수행하고, 에러가 발생하면 해당 모달창에 바로 띄워주고 싶어서 시도! 원래 제공되는 기능인데, 그냥 쓴 방법을 정리해 둔다. 모달창 템플릿 코드는 아래와 유사하게 되어 있다. 여기서 div class="invalid" 부분이
3 min read
서버리스 장고 - AWS Lambda framework 자료 조사
develop

서버리스 장고 - AWS Lambda framework 자료 조사

파이썬 기반의 서버리스 API 혹은 장고 platform을 구축할 수 있다는 Zappa! 관심 키워드로 두고 검색을 해보고 있음 서버 운용자 없이 그냥 코드만 관리하려면, 서버리스로 웹서버나 장고를 돌릴 수 있으면 베스트 인데, 소규모 스타트업 경우는 그냥 하나 띄워두고 자기 서비스에 집중할 수 있다니 한번 테스트 베드라도 구축해 두면 여러모로 도움이 될
7 min read
Django - slack bot 에 메시지 전송
develop

Django - slack bot 에 메시지 전송

장고 혹은 파이썬에서 슬랙봇으로 메시지를 보내는 것을 해보자. 용도는 엄청 다양하다. 일단은 장고 동작 중에 admin에게 알리는 메시지를 이메일로 처리하곤 했는데 이놈의 smtp 가 참 여기저기 문제다. 그냥 Slack 을 믿고 slack message로 처리하도록 해보자. 아래 글을 참고하면 아주 쉽게 메시지를 보낼 수 있다. slacker.Error: invalid_auth 에러 해결방법안녕하세요
1 min read
Python - libpng warning: iCCP: known incorrect sRGB profile 에러 해결
develop

Python - libpng warning: iCCP: known incorrect sRGB profile 에러 해결

libpng warning: iCCP: known incorrect sRGB profile 이런 에러가 아니라 경고가 뜨는데, 머 그냥 넘어가도 그림이 보이는 데는 문제가 없었는데 그냥 찝찝해서 찾아봄 먼가 파일에 포함된 코드 일부가 profile에서 지원되지 않는 것 머 이런거라는 설명이 있는데, 해결책은 아래 코드로 해당 파일을 읽어, 파이썬에서 제공되는 png 라이브러리로 파일을 변환해서 사용하면 될
2 min read
Django - Ninja api querystring 처리
Django

Django - Ninja api querystring 처리

Django ninja api 엔진을 쓰고 있는데, 쿼리스트링을 처리하는 함수를 만들려고 한다. 주소에서 파라메터를 뽑아 쓰는 것은 직관적이었는데... 역시 똑같다. 차이가 없다. @api.get("/weapons") def list_weapons(request, limit: int = 10, offset: int = 0): return weapons[offset: offset + limit] * 파라메터에 기본값을 넣고 추가해 준다. 이건 path parameter 와 완전 동일하다.
1 min read
Django - CreateView form_valid() 오버라이딩
develop

Django - CreateView form_valid() 오버라이딩

CreateView 저장 작업을 할때 커스텀 동작이 필요하다면, form_valid()를 오버라이딩해서 그냥 여기서 저장해 버리는 방법이 있다. View를 쓴다는게 좀 커스텀 동작을 제약하는 경우와 편리성을 바꾸는 것이니 만큼 좀 불편해도 이렇게라도 변경해서 쓰자. 기본 코드는 아래와 같다. def form_valid(self, form): self.object = form.save() # do something with self.
2 min read
Django - ModelForm __init__() 함수 예제
develop

Django - ModelForm __init__() 함수 예제

그냥 예제 ModelForm init() 함수에서 수행할 것을 몇 가지 저장해 둔다. * 원하는 필드만 보여주기 fields * 필요 없는 필드 제거해서 보여주기 exclude * labels 를 이용한 원하는 라벨 표기 * widgets 으로 원하는 form 객체 가져다 놓기 * 필드에 필터링 해서 데이터를 올려줄 수 있는 queryset * empty label 보여주지 않게 하기 class ProductProfileForm(forms.
1 min read
Django - UpdateView form_valid() 예외처리
develop

Django - UpdateView form_valid() 예외처리

UpdateView 를 이용하여 업데이트 할때, 혹여나 form_valid() 에서 Exception 이 발생하면 그냥 오류 페이지가 떡 떠버린다. 이런거 무시하고 특정 페이지로 무조건 리턴되도록, 즉 예외가 발생하면 update 없이 머 success url 로 이동시키자 이런 코드를 넣어보자. 단순하게 아래처럼 예외를 pass 해버리고 무조건 success_url() 로 이동시키도록 해봤다. def form_valid(
1 min read
Django - UpdateView pk 있을때 없을때 다 처리하기
Django

Django - UpdateView pk 있을때 없을때 다 처리하기

UpdateView pk 없이 사용하는 방법을 전 포스트에서 알아 봤는데 PK 값이 url에 있든 없든 하나의 View로 다 처리하고 싶어졌다. 일반 사용자는 자기꺼만 처리하면 되지만, superuser 혹은 admin은 다른 사용자 정보를 수정하고 싶을 수 도 있기 때문에 pk 값을 넘겨 받아서 사용하는 것도 같은 UpdateView에서 처리하고 싶었다. 그냥 get_object() 함수
3 min read
Django - UpdateView pk 없이 사용하기
develop

Django - UpdateView pk 없이 사용하기

url 로 UpdateView 의 PK 값을 넘겨주는 방식이 일반적인데, 사용자 정보 같은 것을 넘겨줄 때 사용자에 대한 pk 값이 노출되는게 부담스럽다. 꼭 넘겨줘야 하나? 내꺼만 고치면 되는데... 이때는 내장 함수를 통해 자기가 로딩 되면서 가져오도록 하면 된다. 자기 객체를 불러오는 방식이다. 주인공은 바로, get_object(self) @method_decorator(login_required,
2 min read
Django - 유효성 검사에 대한 글
Django

Django - 유효성 검사에 대한 글

수많은 정보를 저장하고 꺼내오고 해야 하는 시대에 Django 로 서비를 만들고 하다보면, 각각 필드의 유효성 검사에 대한 고민이 엄청 많다. 폼에서 하나 자바스크립트로 하나 model 에서 하나...등등등 아래 글에서 인사이트를 얻어보자 잘 정리해 두셨네. 강의를 들으면서 정리하신 내용 같은데 많은 도움이 되었어요 😊 Django Form Validation출처 : https://www.inflearn.com/
3 min read
PostgreSQL - 파이썬으로 select and copy 구현 - executemany()
develop

PostgreSQL - 파이썬으로 select and copy 구현 - executemany()

파이썬 라이브러리 psycopg2 를 이용해서 select 구문으로 읽은 데이터를 insert 구문으로 복사해서 넣는 아주 무식한 동작을 해보자. psql 쿼리로 연속적인 대량의 데이터를 처리하는 경우, 그냥 executemany 를 써서 편리하게 이용했다. 간단한 executemany 예제를 볼까? executemany 예제 사실 이런 예제는 다른 2개의 database 사이에 데이터를 옮길때나 필요하지 쓸일이 없는 것 같긴한데,
2 min read
Django - ForeignKey display text 
변경하기
Django

Django - ForeignKey display text 변경하기

modelforms 에서 자동으로 값을 가져오긴 하는데 __str__ 에 정의된 글자나 키 값을 기본으로 보여준다. 부가적으로 정보를 더 보여주고 싶은데 __str__ 을 바꾸면 전체에 이 모델을 접근하는 부분이 다 바뀌므로, 딱 combo에 올라가는 글자만 변경하고 싶다면, label_from_instance 속성을 건드리면 된다. 자세한 설명은 아래 링크를 참고해 보시고, How to change
2 min read
Django model.forms 사용자 필드 추가
develop

Django model.forms 사용자 필드 추가

model form에서 추가로 별도의  사용자 필드를 추가하고 싶다면, 아래처럼 추가로 forms.필드타입 으로 선언해서 사용하면 된다. label, widget 용례도 참고해 보면 좋다. required=False 도 옵션으로 주면, 필수 항목으로 추가 되지 않는다. class FirmwareForm(forms.ModelForm): is_fileinclue = "enctype=multipart/form-data" autogen = forms.BooleanField(label=_("중복시 자동변경"), widget=forms.CheckboxInput(
2 min read
Django - ORM union 사용해보기
develop

Django - ORM union 사용해보기

말로만 듣던 union() 을 사용해 보려 찾아본다. 사실은 쿼리셋 2개를 하나로 합치기 위해서 찾아봄. 아래 링크에서 정답을 찾을 수 있고, union 부분만 발췌 [Django] queryset 결과 합치기합칠 대상의 결과가 2개 이상인 경우 union() union()를 사용해서 1개로 합칠 수 있습니다. union()의 2번째 인자는 중복을 허용할지에 대한 여부인데 기본값은 False로
1 min read