인프런 커뮤니티 질문&답변

chacha님의 프로필 이미지
chacha

작성한 질문수

Do It! 장고+부트스트랩: 파이썬 웹개발의 정석

tag 수정기능구현시 오류

작성

·

432

1

안녕하세요 교재구입후에 강의 들으며 진행중에 있는 학생입니다.

p424 의 오류발생하여 425 페이지의 코드로 수정했고

Cmder 자체에는 ok가 나왔습니다.

그런데 서버에서 태그 입력란에 쓰고 써밋시 오류가 발생합니다.

 

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

ㅠㅠ 정말 하루종일 씨름했습니다..... 도와주세요

답변 1

1

SungYong Lee님의 프로필 이미지
SungYong Lee
지식공유자

tag의 slug가 중복으로 들어간게 있나봅니다. 

중복으로 저장된 slug가 있는지 확인해보시고, 그걸 지워보세요. 

chacha님의 프로필 이미지
chacha
질문자

답변감사합니다.

중복된 slug 값을 제거하는 방법이  templates안의 html이나 blog 내 py 들을 확인해봤는데 

이 방법이 맞는걸까요? 오전에 주신 답변보고 1시간정도 코드확인을 했는데 책과 다른부분이

없어서요 

C:\github\doit\venv\lib\site-packages\django\db\backends\sqlite3\base.py, line 423, 

(정말 죄송하지만 혼자공부하고있어서)

혹시 저 오류만 보고 어떻게 slug값이 중복되신걸 아셨을까요? 오류읽는법이 궁금합니다...

SungYong Lee님의 프로필 이미지
SungYong Lee
지식공유자

안녕하세요. 더 자세히 설명 드릴걸 그랬네요. 

이 에러는 소스코드와는 직접적인 관계가 없어보입니다.  db에 저장되어 있는 tag가 여러개 있고, 그 중 중복되는 slug를 갖는 tag가 있을거에요. 

지우는 방법은 admin 페이지에 들어가서 삭제하는 방법이 있습니다. 그런데 아마 저 상태면 admin에도 들어가지지 않을 가능성이 있겠네요. 

가장 간단한 방법은 db.sqlite3를 삭제해서 모든 데이터베이스 정보를 삭제하는겁니다. 

그리고 python manage.py makemigrations 와 python manage.py migrate로 새로 db를 만들면 문제없이 될거에요. 

제가 저 에러메시지를 보고 진단을 내린 방법은 Unique constraint failed: blog_tag.slug라는 메시지 덕입니다. 한국어로 번역해보면, blog의 tag 필드의 slug가 unique 해야 한다는 제약조건이 있는데, 여기서 실패했어. 라는 뜻이니까요. 

개발을 하다보면 눈에 익은 에러메시지들이 점점 많아지실거에요. 에러가 발생하면 피곤하긴 하지만, 에러를 많이 만날 수록 경험치가 많이 쌓이니까 반갑게 받아들여주세요. 앞으로도 궁금한 내용이 있다면, 여기 질문 남겨주세요.  

chacha님의 프로필 이미지
chacha
질문자

db.sqlite3를 삭제를 했고 16강 진행중에

태그를 서버에서 작성해보았습니다.

문제가 tag1개를 작성시에 빈값의  tag1개가 자동으로 생성이 되어서

db 에 data가 2건이 생성이 됩니다(정상적인 tag1개, 빈값의 tag1개)

아무래도 db에 두번 호출하는것 같은데요 해결할수 있는 방법이 있을까요?

SungYong Lee님의 프로필 이미지
SungYong Lee
지식공유자

제가 테스트를 좀 해봤는데, 

태그를 두개 입력하고 싶다면, 

첫번째태그;두번째태그

이렇게 입력하면 두개만 입력되는데, 사용하시면서 

첫번째태그; 두번째 태그;

이렇게 맨 마지막에 세미콜론을 한번 더 하시는게 아닐까요? 

그래서 빈 태그가 하나 더 생기는 것 같아요. 

이렇게 사용하는 사람도 있을 수 있다는걸 생각하지 못했습니다. 제가. 

이 상황이 맞나요?

chacha님의 프로필 이미지
chacha
질문자

맞습니다.... 뒤에 ; 이걸 붙이는 바람에 나타나는 상황이었네요 ㅠ

좀더 생각해보고 질문해야했는데 저는 코드를 잘못썼나하고;;;

정말정말 감사합니다! 

(저는views에  tags_str = tags_str.strip('; ')   추가해주었더니 이 오류는 더이상 발생하지 않습니다)

저두 이 케이스로 골머리를 앓고 있는데요.
기존에 admin페이지를 통해서 등록되어있는 tag를

파이썬; 한글 태그

라고 입력하면 문제가 없습니다.

하지만 기존에 장고라는 키워드가 없을때

파이썬; 장고

라고 입력후에 제출하면

IntegrityError at /blog/update_post/14/
UNIQUE constraint failed: blog_tag.slug

이렇게 나오구요.

그 이하 에러 문구들 중 굵은 글씨로 표시된것들은

/Users/daniel_choi/Desktop/total_projects/third_django/blog/views.py, line 182, in dispatch
            return super(PostUpdate, self).dispatch(request, *args, **kwargs) …
Local vars
/Users/daniel_choi/Desktop/total_projects/third_django/blog/views.py, line 199, in form_valid
                tag, is_tag_created = Tag.objects.get_or_create(name=t) …
Local vars

가 있습니다.

 

어떻게 해결하면 좋을까요?

chacha님의 프로필 이미지
chacha

작성한 질문수

질문하기