Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Linked list
- 알고리즘
- gpdb
- 코딩테스트
- 시뮬레이션
- aws
- Bruth Force
- Priority Queue
- GitHub
- boj
- Back tracking
- Trie
- SQL
- django
- CSV
- 구현
- Python
- spring boot
- JavaScript
- SWEA
- BFS
- 알고리듬
- 코테
- 모의SW역량테스트
- Algorithm
- DFS
- hash table
- Vue.js
- Data Structure
- programmers
Archives
- Today
- Total
hotamul의 개발 이야기
[hotamul] 태그 제거되는 버그 수정 본문
Post
에 image
컬럼이 없으면 태그 이름을 통해 기본 이미지를 제공하는 기능을 추가했다.
# 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번째 방법을 사용했다.
while
대신for
문을 사용하고pop
메소드를 사용하지 않기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']))
...
'project > share-blog' 카테고리의 다른 글
[hotamul] Django Admin Action without selecting objects (0) | 2022.10.10 |
---|---|
[hotamul] json으로 Django secret key 관리 하기 (0) | 2022.09.27 |
[hotamul] Django 실행 시 sqlite3 버전 이슈 (0) | 2022.09.16 |
[hotamul] EC2에서 Python3.8 설치 및 버전 변경 (0) | 2022.09.16 |
[hotamul] github 댓글 기능 (utterances, Vue.js) (0) | 2022.09.09 |
Comments