PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(6)

간만에 포스팅 입니다. 그 동안 정신없는 시간들을 보냈네요ㅠㅠ 기다리시는 분이 계신지 모르겠지만, 강의가 마무리 될 수 있도록… 오늘도 달려 봅니다. 오늘은 지난 시간에 마지막에 예고한 대로, 다음 2가지 플로우를 진행해 볼 겁니다.

1) Form 클래스에서 에러 메시지 다루기
2) 회원가입 Form 에 스타일 적용하기

이 외에도 몇 가지 더 하려고 했으나…… 추후로 미루도록 하고…. 시작해 볼께요:)

1) Form 클래스에서 에러 메시지 다루기

오늘은 짧고 굵게 진행할 겁니다. 지난번 강의를 기억 하시나요? Form 에서 에러가 났을 때, 출력 되어지는 내용이 모두 영어로 되어 있었습니다.

영어로 뜨는 에러들
이런 식으로 말이죠.

그래서, 가장 먼저! 저 영어를 저희 입맛에 맞게 커스터마이징을 할 겁니다. 바로 시작해 볼까요?

이렇게 말이죠.
다시, 지난번 프로젝트를 열어서 확인을 한 번 더! 해봅시다.
조금 더 깊숙히 들어가 볼까요?
먼저, 살짝 Django 의 내부 구조를 들여다 볼 겁니다. 저희가 사용한 CharField 가 어떻게 구성되어지는지 한번 뜯어 볼까요?
조금 조금 더 더~
CharField 클래스는 Field 클래스를 상속받아 구현된 클래스네요. 다른 코드는 다 무시하고, min_length 와 max_length 란 상황에 대해 validator 라는걸 추가하는 코드가 있네요. 그리고 MinLengthValidator와 MaxLengthValidator 가 각각 있는데, 이녀석들도 한번 볼까요?
소근소근
deconstructible 이라는 데코레이터가 붙은 클래스가 하나 나왔습니다. BaseValidator를 상속받아 구현된 녀석인데, 여러가지가 있지만…. 무엇보다 눈에 띄는건 message 부분 이네요. 그리고 아래쪽에 보이는 code. 대충 작동 원리를 예상해보면, Validator 에서 Validation을 수행하고, 이가 실패 될 경우 code 를 Key로 가지는 Message를 반환할거 같네요.(사실 저도 코드 보고 알았어요.)
이제 더 깊이 들어갑니다!
이번엔 CharField 클래스의 부모 클래스는 Field 클래스를 한번 볼까요?
잡았다 요놈!
Field 클래스가 최상위네요. 아무튼, Django 팀이 달아 놓은 주석도 보이네요. ‘default_error_message’ 라는 필드가 유독 눈에 띄며, 아래쪽에 __init__ 함수를 잘~~ 보시면… error_messages 란 인자에 대한 설명이 보입니다. default message를 오버라이드…! 저희가 뭘 해야 하는지 보이네요.
에러 출력하기
굳이 이렇게 찾아가지 않아도 되지만… 무튼, error_messages 란 인자를 Field 에 추가하는 것으로 에러 메시지를 수정할 수 있습니다. 저희가 찾은 에러가 min_length 인거 기억나시나요? MinLengthValidator 에 의해서 반환되는 코드가 min_length 였죠? error_message를 한번 오버라이드 해볼까요?
되는구나!
오! 저희가 원하는 대로 수정되었습니다!! 이제 조금 더 본격적으로 수정을 해 보죠!
찾았네요!!
아까 validator 에서 메시지를 잘 보면, %(limit_value)d 라고 하는 엄청나게 포멧 출력을 하는 느낌의 코드가 있습니다. 오호…. show_value와 limit_value 라는 2개의 값이 보이네요…
찾은건가!!
맞는지 한번 입력해 볼까요!
이제 마무리를 지어보자!
맞았네요! 그렇다면 남은 할인은 뻔하죠?
마무리!
조금은 형식적으로 문장 다운 문장으로 마무리 지어볼까요!
하하핳... 그냥 한번 코드 분석으로 풀어보려고 했어요..
사실, 굳이 이 고생 안해도… Django 매뉴얼에 아주 잘~~ 나와 있습니다. BooleanField 는 Error message keys가 requried 이다- 하고 잘 나와 있습니다. min_value 니 뭐니 하는 거도 다 나와 있습니다…. 다른 필드를 수정하실거면… 여길 참고하세요….:)

https://docs.djangoproject.com/en/1.8/ref/forms/fields/

위 주소에서 필드 정보들을 확인할 수 있습니다. 주소에 있는 1.8 은 Django 버전입니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

2) 회원가입 Form 에 스타일 적용하기

이제 Form 에 에러 메시지를 다루는 법도 알았으니…. 회원 가입 폼을 좀 예쁘게 바꿔볼까요? 사실, 회원 가입 폼이 너무 예제틱 하게 생겼잖아요? 그래서…

음~~ 난잡해...
이렇게 생겨 먹었던 아이를,
오메!!!?
이렇게 한번 바꿔볼까 합니다.

간단하게 CSS를 이용해서 스타일링을 하는거니, CSS 사용하실 수 있는 분들은 Form을 분리해서 사용하는 법만 보셔도 되겠네요. 아무튼, 들어갑니다!

템플릿 개편 입니다!
기존의 join_page.html 을 대거 수정 합니다. 먼저, 기존에는 {{ join_form }} 으로 form 내용을 한꺼번에 출력하게 했는데, 이번에는 이걸 좀 분리해 줍시다. join_form은 Form 클래스가 넘어옵니다. 해당 데이터들을 사용할 수 있으니, 적절하게 div 를 섞어서 보기 좋게 분리해 줍니다. ‘join_form.필드명’ 이 곧 해당 필드를 의미하며(join_form.id 처럼), ‘join_form.필드명_for_label’ 처럼 사용하면 label 태그의 for 를 위한 대상 id를 참조할 수 있습니다. label 태그를 사용하지 않을거면 몰라도 되는 부분이죠?
CSS 설정하기
그리고사이에 스타일을 추가해 줍시다. CSS 파일을 분리해도 되지만, 그건 이번 강의 내용을 벗어나니까 추후에… CSS는 제가 임의로 작업한 내용이며, 입맛에 맛게 수정해서 사용하시면 됩니다.
완성!
그랬더니 이렇게!!!! 뙇!!!
19
Chrome 이나 Safari 등에서는 CSS3 표준 문법이 아직 제대로 작동하지 않습니다. 작업한 CSS 코드가 CSS3의 Flexible box model 기능을 사용했는데, Flexible box model 이 아직 공식 표준으로 등재되지 않았기 때문에 그렇습니다. 그러니, 호환성 확보를 위해 -webkit- 시리즈와 -moz- 시리즈도 추가해 줍시다.
크로미움에서 확인!
크롬에서도 잘 나오네요!

3) 마치며…

이번 시간에도 간략하게 훑어 봤습니다. 점점 강의 내용이 짧아지는 거 같지만, 기분 탓으로 돌리고…. 다음 시간에는 같은 방식으로 로그인 페이지와 게시물 페이지를 개편하고, 로그인한 사용자에 한해 게시물 쓰는 기능과 현재 처리되지 못한 예외 처리 등등에 대해서 알아보려 합니다.

 

[출처] https://devissue.wordpress.com/2015/04/19/pycharm%ea%b3%bc-%ed%95%a8%ea%bb%98-django%ec%99%80-restframework%eb%a5%bc-%ed%99%9c%ec%9a%a9%ed%95%98%ec%97%ac-%ea%b0%84%eb%8b%a8%ed%95%9c-%ea%b2%8c%ec%8b%9c%ed%8c%90-%eb%a7%8c%eb%93%a4%ea%b8%b06/

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED