Django – slack bot 에 메시지 전송

장고 혹은 파이썬에서 슬랙봇으로 메시지를 보내는 것을 해보자.

용도는 엄청 다양하다. 일단은 장고 동작 중에 admin에게 알리는 메시지를 이메일로 처리하곤 했는데 이놈의 smtp 가 참 여기저기 문제다.

그냥 Slack 을 믿고 slack message로 처리하도록 해보자. 아래 글을 참고하면 아주 쉽게 메시지를 보낼 수 있다.

[
slacker.Error: invalid_auth 에러 해결방법
안녕하세요 유튜버 조코딩입니다. 제 채널의 크레온 API를 활용한 파이썬 주식 투자 자동화 강의 들으시는 분들 중 slacker를 이용하실 때 2021년2월24일 이후 invalid_auth에러가 떠서 진행이 안되시는 분들이 있..
![](https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpcuCE%2FbtqZrfD0HqW%2FwI3V1MT6fHs35LEXP8RK9K%2Fimg.png)
](https://developerdk.tistory.com/96)
  • 아무것도 필요 없고, 접속 토큰과 requests 모듈이면 충분한다.
  • bearer token에 슬랙봇 토큰 정보를 사용하면 된다.
  • data={“channel”: channel,”text”: text} 이 형태로 보내면 끝

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

libpng warning: iCCP: known incorrect sRGB profile 이런 에러가 아니라 경고가 뜨는데, 머 그냥 넘어가도 그림이 보이는 데는 문제가 없었는데 그냥 찝찝해서 찾아봄

먼가 파일에 포함된 코드 일부가 profile에서 지원되지 않는 것 머 이런거라는 설명이 있는데, 해결책은 아래 코드로 해당 파일을 읽어, 파이썬에서 제공되는 png 라이브러리로 파일을 변환해서 사용하면 될 듯

다른 실행 파일로 변환하는 방법도 많이 있던데, 머 코딩중이니깐 아래 코드를 임시로 돌려서 1.png 2.png 파일을 만든다음, 이 코드는 주석처리 해 버리면 되니깐 🙂

pixmap = QPixmap()pixmap.load(":/icon/err_icon.png")file = QFile("1.png")file.open(QIODevice.WriteOnly)pixmap.save(file, "PNG")pixmap = QPixmap()pixmap.load(":/logo/err.png")file = QFile("2.png")file.open(QIODevice.WriteOnly)pixmap.save(file, "PNG")
  • 파일 사이즈가 좀 줄긴 하네
  • 😅😅 워닝 제거가 안되네…ㅋㅋㅋ 좀 더 파봐야 할 듯~~
  • 아래 참고 사이트 글을 참고하셔서 아예 파일 변환으로 해보세요~~

참고 사이트

  • 기본 코드와 다른 솔루션도 소개되어 있는 QA 글.
[
libpng warning: iCCP: known incorrect sRGB profile
I’m trying to load a PNG image using SDL but the program doesn’t work and this error appears in the console libpng warning: iCCP: known incorrect sRGB profile Why does this warning appear? What
![](assets/images/2023/02/apple-touch-icon@2.png?ssl=1)
](https://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile)
  • mogrify 을 이용한 변환 – 원본 파일 백업이 필수!!
[
[Utilities] libpng warning: iCCP: known incorrect sRGB profile
Introduction 학습에 이미지 데이터를 사용하다 보면 libpng warning: iCCP: known incorrect sRGB profile 라는 메시지가 콘솔 창에 출력될 때가 있다. Error가 아닌 warning이기도 하고, 뭔가 에러가 레이즈 되..
![](https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMgXrM%2FbtrAD9IkGsH%2FSm1QKZW5XnsIAM4w8cj820%2Fimg.png)
](https://jh-bk.tistory.com/41)

Django – resolve_url, reverse 코드 예제

modal 창을 띄워서 UpdateView, CreateView 를 처리하고 난 다음 success_url의 경우 호출한 detail 화면으로 보내는 것이 일반적이다.

그럼 detail url 을 success_url 로 리턴할 수 있어야 한다. get_success_url() 을 overriding 해준다.

간단하게 resolve_url() 함수를 쓰면, path parameter 도 같이 처리할 수 있다. 작성한 코드 조각을 남겨둔다.

urls.py 파일에는,

    path("orderitem/<int:pk>", orderitem_view, name="orderitem_view"),

이렇게 되어 있는 url 로 돌아가고 싶다고 가정하면, 아래 처럼 path parameter 를 주면 된다.

class OrderItemWorklineUpdateView(BSModalUpdateView):    model = OrderItem    template_name = "_modal_update.html"    form_class = OrderItemWorklineForm    success_message = "변경완료"    # success_url = reverse_lazy('orderitem_list')    def get_success_url(self):        print("OrderItemWorklineUpdateView get_success_url override", self.object)        redirect_url = resolve_url("orderitem_view", pk=self.object.id)        return redirect_url
  • self.object.id – UpdateView 의 넘겨진 object 는 self.object 에 이미 저장되어 있다.
  • resolve_url 리턴값은 스트링이다.

참고 페이지

아래 링크는 자세히 읽어 보는 게 좋다. reverse, redirect, resolve_url, get_absolute_url 용례가 잘 설명되어 있다.

[
URL Reverse, 아는 사람은 꼭 쓴다는 get_absolute_url() · 초보몽키의 개발공부로그
![](assets/images/2023/02/profile.png?ssl=1)
](https://wayhome25.github.io/django/2017/05/05/django-url-reverse/)