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/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
22 [파이썬으로 웹 크롤러 만들기] 크롤링 시작하기(2/3) file 졸리운_곰 2017.02.16 709
21 [파이썬으로 웹 크롤러 만들기] 크롤링 시작하기(1/3) file 졸리운_곰 2017.02.16 772
20 Python으로 RESTAPI 이용하기 졸리운_곰 2017.02.11 462
19 [Python] 네이버 블로그 xml-rpc 클라이언트 만들기 – 1 졸리운_곰 2017.01.07 563
18 웹 크롤링 by python file 졸리운_곰 2016.12.14 1451
17 [Scrapy] 웹사이트 크롤링해서 DB 저장 하기(분양정보수집사례) file 졸리운_곰 2016.11.29 740
16 [Scrapy] 웹사이트 크롤링해서 파일 저장 하기(분양정보수집사례) file 졸리운_곰 2016.11.29 1721
15 [python] BeautifulSoup으로 웹에 있는 데이터 긁어오기 졸리운_곰 2016.11.15 586
14 [python] httplib — HTTP protocol client¶ 졸리운_곰 2016.11.15 548
13 python torrent 자동 다운로드 : How to automatically search and download torrents with Python and Scrapy 졸리운_곰 2016.11.02 875
12 Apache와 Python 연동하기 졸리운_곰 2016.10.16 1612
11 HTML Scraping [파이썬 웹 스크래핑 간단 메뉴얼] 졸리운_곰 2016.07.30 766
10 Anonymous Web Scraping using Python and Tor file 졸리운_곰 2016.05.04 1284
9 Using TOR with Python file 졸리운_곰 2016.05.04 1911
8 Crawling anonymously with Tor in Python 졸리운_곰 2016.05.04 542
7 scrapy : 크롤링 해보기 file 졸리운_곰 2016.04.21 719
6 Python으로 공공데이터 오픈 API 활용하기 졸리운_곰 2016.01.14 1225
5 Title: HTML Scraper using pyhton 졸리운_곰 2015.09.01 400
4 위대한 LG SMART SMA LG 빅데이터 플랫폼 [파이썬 웹 크롤러] 웹 스파이더 file 졸리운_곰 2015.05.02 1154
3 위대한 LG SMART SMA LG 빅데이터 플랫폼 [소셜 웹 마이닝] 데이터 마이닝, 웹 마이닝 file 졸리운_곰 2015.05.02 775
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED