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

반갑습니다! 날씨가 점점 따뜻해지고 있네요. 전 이렇게 계절이 바뀌는 날에 감기에 잘 걸리곤 합니다. 다행히, 이번에는 감기 없이(대신 허리가…) 무사히 지나가고 있네요.

이번 시간에는 지난번에 다 끝내지 못한 Form 의 예외 처리와 로그인 폼 / 게시물 페이지에 각각 CSS 를 적용하여 사용하는 방법을 알아 볼 것 입니다. 일단, 순서는 다음과 같습니다.

  1. Form에 예외 처리 추가하기
  2. 로그인 / 게시물 페이지에 CSS 적용하기

그럼, 바로 시작해 볼까요?

1) Form에 예외 처리 추가하기

먼저, 지난 시간에 저희가 했던 걸 다시 떠올려 봅시다.

마지막 결과물
이러한 모양으로 마무리 지었었죠?

저런 걸 만들었는데… 몇 가지 문제가 있습니다. 폼에서 에러 항목들이 표시 되지 않고 있습니다.

뭔가가 이상해 졌습니다!
이렇게 ID만 입력하고 ‘회원 가입’ 을 눌러봐도… 아무런 반응이 없습니다. 어라??

회원 가입 페이지에서 PASSWORD 항목을 비우고 회원 가입을 눌러봐도… 아무런 미동도 없습니다. 뭔가 이상하네요…

이 증상은 CSS 적용을 위해 Form 클래스를 커스텀 하게 사용해서 그렇습니다. 이를 위해서는 Django 공식 문서를 살짝 살펴 봅시다. Working with forms 라는 문서 중, ‘Rendering fields manually‘ 라는 항목을 한 번 봅시다. 해당 항목에 2번째 하위 항목으로 ‘Rendering form error messages‘ 라는 항목이 있습니다. 자세한 내용은 각자에게 맡기고, 다음 항목에 주목해 볼까요?

Using {{ form.name_of_field.errors }} displays a list of form errors, rendered as an unordered list.
{{ form.name_of_field.errors }} 을 이용하면 에러들을 화면에 출력할 수 있으며, 해당 리스트는 정렬되지 않은 상태 입니다.

The list has a CSS class of errorlist to allow you to style its appearance.
리스트들은 errorlist 라는, 스타일링 할 수 있는 CSS 클래스를 가집니다.

자, 이제 저희가 뭘 해야 할지 좀 보이네요. 예제 코드를 따라 작성해 보죠!

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

문서대로 에러 코드 작성
문서에 적힌 대로 작성해 봅시다. 먼저, 넘겨진 form 데이터에서 errors 데이터가 존재하면 에러 필드를 출력하도록 {% if %} 태그를 사용하여 조건을 겁니다. 그리고 errors에 들어 있는 모든 내용을 출력하게 합니다.
결과물
정상적으로 출력되는지 먼저 확인해 보니… 짜잔!
CSS 태그를 추가 합니다.
그리고 CSS 를 조금 추가해 줍시다. 에러 항목들 앞에 ! 가 출력 되도록 하고, 폰트 크기를 조금 줄여주고 li 태그에 붙는 스타일은 해제.
에러가 출력 되고 있습니다!
그 결과로 이렇게!
에러 출력하게 하기
나머지 부분에도 에러 출력을 위한 코드를 추가 삽입해 줍시다.
1차 결과물
이렇게 정상적으로 출력이 되네요. 다음으로, 이제 한글화를 시작해 볼까요?
한글화 싲가
forms.py 에다 password_errormessages 라는 변수를 만들고, 그곳에다 한글로 된 내용들을 채워 넣었습니다. 그리고 아래 필드들은 이를 참조하도록 했구요.
이렇게 한글화가 되었습니다!
그리고 그 결과는 이렇게! ID가 정상적으로 되지 않았으니, ID 도 적용해 볼까요?

항목 수정

결과물
그 결과로 이렇게!!
실수!
6자 이하로 입력… 했더니, 잘못된 글이 출력되고 있네요? %를 써야할 부분에 $로 써 버렸네요… 이를 수정하고 정상화 시켜 봅시다.
변경!
$를 %로 변경하였습니다.
결과물!
그 결과로 이렇게!!

 

2) 로그인 / 게시물 페이지에 CSS 적용하기

회원 가입 폼에 일반적인 예외 처리도 진행 했고, 이제 로그인과 게시물 페이지를 조금 수정해 보도록 할까요? 뭐저 어디까지 진행 했나 확인부터 해볼까요?

오...
….
...허허헣...
….허…

예제…라 다행이네요… 이 처참한 몰골을 조금 수정해 봅시다!

템플릿 정리하기
먼저, 템플릿 위치를 조정할 겁니다. 저번에 패키지 구성을 새롭게 했는데, 템플릿 들은 아직 정리가 덜 되었네요? board에 포함된 login을 user_manager 내로 옮길 겁니다.
참 쉽죠?
이렇게 말이죠.
진화의 시작
그리고 login_form.html 이 이렇게 생겼는데, 이걸….
간단하게 대체해 보아요!
이렇게 고쳐 줍시다. 기본적인 내용은 join_page.html과 같으니 join_page.html 내용을 모두 붙여 넣고, ‘회원가입’을 ‘로그인’으로 변경하고 / form 의 action을 validate/ 으로 변경하며, join_form 을 모두 login_form 으로 변경 합니다.(전체 바꾸기) 그리고 password_check 항목들은 모두 제거! 하면 완성!
끝!
그렇게 하면 이리도 쉽게 바뀝니다…. 회원 가입과 로그인은 거의 같으니까요.
보더도 바꿔 봅시다.
Border 도 같은 방식으로 바꿔줍시다. post_list.html 파일로 가서, 다음과 같이 간단한 스타일링과 테이블 구조를 만들어 줍니다.
이렇게 말이죠.
조금 허전한 걸 채우기 위해, 몇 가지 추가 내용도 포함 시켜봤습니다.
결과물!
그 결과는 이렇게!!

마치며…

나머지 폼에 대해서도 CSS 를 살짝 입혀 봤습니다. 포스팅을 작성하다 느꼈지만, Table 구조로는 몇 가지의 이야기 진행이 어려울 거 같단 생각이 드네요… 정렬 문제나 컨텐츠 배치 문제가 생길거도 같고… 그런 이유로, 다음 시간에는 Table 로 작성된 게시판을 div 와 CSS 스타일링 만으로 예쁘장하게 한번 꾸며보는 것을 시작으로, 공통된 CSS 묶기 를 진행해 보도록 하겠습니다.

 

[출처] https://devissue.wordpress.com/2015/04/26/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%b07/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
26 [Django 15] 샘플 - Feedback 예제 file 졸리운_곰 2017.01.28 474
25 [Django 14] Static 파일 file 졸리운_곰 2017.01.28 794
24 [Django 13] Django 폼 (Form) 졸리운_곰 2017.01.28 347
23 [Django 12] 템플릿 확장 file 졸리운_곰 2017.01.28 872
22 [Django 11] Django App URL 매핑 file 졸리운_곰 2017.01.28 374
21 [Django 10] Django 모델 API 졸리운_곰 2017.01.28 422
20 [Django 09] DB Migration file 졸리운_곰 2017.01.28 412
19 [Django 08] Django 모델 (Model) file 졸리운_곰 2017.01.28 378
18 [Django 07] Django 템플릿 (Template) 졸리운_곰 2017.01.28 540
17 [Django 06] Django View 졸리운_곰 2017.01.28 1311
16 [Django 05] Django App이란? file 졸리운_곰 2017.01.28 373
15 [Django 04] Django 프로젝트 file 졸리운_곰 2017.01.28 1492
14 [Django 03] Django 설치하기 file 졸리운_곰 2017.01.28 1665
13 [Django 02] 가상 환경 file 졸리운_곰 2017.01.28 1195
12 [Django 01] Django 소개 file 졸리운_곰 2017.01.28 1954
» PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(7) file 졸리운_곰 2016.08.04 414
10 PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(6) file 졸리운_곰 2016.08.04 488
9 PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(5) file 졸리운_곰 2016.08.04 603
8 PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(4) file 졸리운_곰 2016.08.04 534
7 PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(3) file 졸리운_곰 2016.08.04 495
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED