hotamul의 개발 이야기

[hotamul] 태그 제거되는 버그 수정 본문

project/share-blog

[hotamul] 태그 제거되는 버그 수정

hotamul 2022. 9. 20. 21:52

Postimage 컬럼이 없으면 태그 이름을 통해 기본 이미지를 제공하는 기능을 추가했다.

# api/utils.py
...
    if obj.image:
        post['image'] = obj.image.url
    else:
        post['image'] = get_default_img(post['tags'])
...
# api/utils.py
...
def get_default_img(tags):
    ret = 'share-blog'
    default_img_list = [
        'django',
        'git',
        'github',
        'python',
        'vuejs'    
    ]
    while len(tags):
        tag_name = tags.pop().replace(".", "").lower()
        if tag_name in default_img_list:
            ret = tag_name
            break
    return "/media/common/{}-logo.png".format(ret)
...

get_default_img 함수를 보면 pop을 사용하기 때문에 태그 이름이 삭제되는 현상이 있었다. (실제로 DB에서 삭제되는 것이 아니라 Client에 전달 되지 않음)

해결 방법은 두 가지가 있는데 나는 2번째 방법을 사용했다.

  1. while 대신 for문을 사용하고 pop 메소드를 사용하지 않기
  2. copy.deepcopy 사용하기 (깊은 복사 vs 얕은 복사)

변경 된 코드는 아래와 같다.

# api/utils.py
from copy import deepcopy
...
    if obj.image:
        post['image'] = obj.image.url
    else:
        post['image'] = get_default_img(deepcopy(post['tags']))
...
Comments