장고로 시작하는 2017년
본 글은 코드스쿼드가 진행하는 인프런의 장고 강의를 바탕으로 함
(참고 : http://bit.ly/2jE3ARl )
장고 테스트 코드 작성
이전 포스팅에서 위와 같은 모델을 생성하였다.
- 모델의 generate 가 제대로 작동하는지 확인하기 위해서는 아래와 같이 test.py를 활용한다.
test.py에 위와 같이 코드를 작성하였다.
+ self.assertTrue() : 괄호 안의 코드가 참이 되어야 정상적으로 출력한다.
아래의 명령어로 test를 실행한다.
python manage.py test
출력된 결과는 아래와 같다.
-현재 날짜
-5개의 로또 번호
- self.assertTrue()안의 값이 FALSE이면?
아래와 같이 출력된다.
뷰와 템플릿 연동
지금까지 model과 view에 대해서는 다뤄보았다
이번 장에서는 template에 대해서 알아본다
- 우선 urls.py를 아래와 같이 수정해보자
이제는 url을 변경해야 접속이 됨을 알 수 있다.
- 뷰를 수정해보자. 자세한 설명은 주석에 달아두었다.
다시 브라우저로 접속을 해보지만 아래와 같이 템플릿이 없다는 이유로 웹페이지가 뜨지 않는다.
- 템플릿을 만들어 보자
- lotto 안에 templates-lotto-default 순으로 다시 만들어 주어야 한다.
*default 뒤에는 .html을 붙여 default.html로 만들어야 한다.
이제 defalut 템플릿에 아래와 같이 준비된 코드를 입력해본다.
<!DOCTYPE html>
<html lang="ko">
<head>
<title>My Little Lotto</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<link href="//fonts.googleapis.com/css?family=Space+Mono" rel="stylesheet">
</head>
<body>
<div class="page-header">
<h1>My Lotto Page</h1>
</div>
<div class="container lotto">
<h2>당첨 기원 (2)</h2>
<p> last update:2000/1/1</p>
<p> 1, 10, 15, 20, 30 </p>
</div>
</body>
</html>
다시 url로 접속해보면 아래와 같이 접속이 된다. 템플릿 연동이 완료 되었다.
CSS 넣기
이전에 위와 같이 설정했었는데 이는 static 파일들을 static 디렉토리에서 관리하겠다는 뜻이다.
lotto 폴더에 static-css-lotto.css 순으로 만들어준다.
.page-header {
background-color: #652596;
margin-top: 0;
padding: 20px 20px 20px 40px;
font-family: 'Space Mono', monospace;
}.page-header h1 {
color: #FFFFFF;
}.container {
font-family: 'Space Mono', monospace;
}.container h2 {
color: #b9f442;
}
미리 준비한 코드를 lotto.css 파일에 작성했다.
defaultd.html 템플릿에서도 static 파일을 로드할 수 있도록 위와 같이 코드를 수정하였다.
이제 장고에게 static 파일들이 생겼다는 것을 알려주어야 한다.
python manage.py collectstatic
위와 같이 주르륵 무언가 적용이 되었다.
웹페이지를 보면 css파일이 적용된 것을 알 수 있고 페이지 소스를 보면 css 파일의 경로가 지정된 것을 확인할 수 있다.
정리
이로서 모델과 뷰를 다루고 템플릿까지 연동해보았으며, css파일을 적용해보았다.