220129 TIL

CoderS·2022년 1월 29일
0

TIL DAY 168

오늘 배운 일

✔️ Django 웹 개발

1. Form에 CSS 적용하기 Ⅲ

이번엔 미리 작성해둔 CSS 파일을 이용해서 조금 더 이쁘게 글쓰기 페이지를 꾸며보겠다.

그러면 post_form.html 에서 위쪽에 CSS 파일의 이름을 바꿔주도록 하겠다.

바뀌기 전...

post_form.html

바뀐 후

다음으로 이 post_form.css 파일을 static 디렉토리 안에 posts 안에 CSS 이 폴도 안에 넣어주도록 해준다.

post_form.css

h1,h2,h3,p,a,ul,li{
    margin: 0;
    padding: 0;
    font-family : 'NanumMyeongjo';
    font-weight: 200;
    list-style:  none;
    text-decoration: none; 
    outline: none;
    color: black;
}
a:hover,a:active,button:hover {
    text-decoration: none;
}
html{
    position: relative;
    min-height: 100%;
    margin: 0;
}
body {
    min-height: 100%;
    margin: 0;
    padding: 0;
    background: #2b2a2e;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: auto;
}
img {
    margin: 0;
    padding: 0;
    border: 0;
}

#nav{
    height: 60px;
}
#header{
    margin: 20px 0 20px;
}
#content{
    margin-bottom: 300px;
}
#footer{
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 75px;
    background: rgba(41, 41, 44, 0.7);
}
.container{
    width: 800px;
    margin: 0 auto;
}

.logo{
    width: 65%;
    min-width: 899px;
    margin: 0 auto;
    padding-top: 17px;
}
.logo img{
    width: 88px;
}
h1{
    text-align: center;
    font-size: 32px;
    letter-spacing: -2px;
    color: #fff;
}
.error{
    text-align: right;
    color: red;
    padding-right: 20px;
    padding-bottom: 20px;
}
.submit{
    margin-bottom: 27px;
    text-align: right;
}
input[type="submit"]{
    padding: 10px 43px 11px 19px; 
    font-size: 15px;
    font-family : 'NanumMyeongjo';
    color: #fff;
    border: 1px solid #5b595f;
    border-radius: 1px;
    letter-spacing: -0.35px;
    background: url(../images/pen.svg)no-repeat 89px 11px/16px;
    cursor: pointer;
}
input[type="submit"]:hover{
    color: #ccc;
    transition: all 0.2s;
}
.editor{
    background: #f9f9f9;
}
input[type="text"]{
    display: block;
    width: 100%;
    padding: 35px 33px 0 30px;
    border: none;
    font-size: 19px;
    font-family : 'NanumMyeongjo';
    background-color: transparent;
    box-sizing: border-box;
}
textarea{
    width: 100%;
    height: 500px;
    padding: 33px 33px 30px 30px;
    border: none;
    font-size: 15px;
    line-height: 1.73;
    font-family : 'NanumMyeongjo';
    background-color: transparent;
    resize: none;
    box-sizing: border-box;
}
textarea,input:focus{
    outline: none;
}
textarea::placeholder{
    color: #a9abb7;
    letter-spacing: -0.44px;
}
input::placeholder{
    color: #a9abb7;
    letter-spacing: -0.44px;
}
.btn_back a{
    display: inline-block;
    margin-top: 30px;
    padding: 10px 19px 11px;
    color: #e38917;
    font-size: 15px;
    border: 1px solid #e38917;
}
.btn_back a:hover{
    color: #f2ad56;
    transition: all .2s;
}
.footer{
    width: 65%;
    min-width: 899px;
    margin: 0 auto;
}
.footer p{
    text-align: right;
    font-size: 20px;
    line-height: 75px;
    font-weight: 800;
    letter-spacing: -0.85px;
    color: #53534f;
}

위의 코드를 참고해서 CSS 파일을 생성해준다.

다시 post_form.html 로 돌아가서 윗부분에 block 을 만들어주고...

post_form.html

이 블록 같은 경우에는 div 태그 안에 h1 태그로 글쓰기를 해볼 것이다.

우선 다음과 같이 코드를 작성해준다.

그 다음에 작성된 폼 컴포넌트 전체를 div 태그로 묶어주겠다.

묶어주면...

그리고 제목과 내용는 지워주도록 해준다.

그리고 밑에 코드에서 하이라이트 된 input 태그를 윗부분에 옮겨준다.

옮기기 전...

옮긴 후...

그리고 또 바뀐게 있는데 값이 전송이 아니라 작성완료로 바뀌었다.

그리고 그 input 태그를 div 태그로 감싸준다.

그럼 다 끝났으니 서버를 실행해서 바뀐 웹 페이즈를 확인해보겠다.

http://127.0.0.1:8000/posts/new/

가보면...

이렇게 글쓰기 페이지가 예쁘게 바뀐 것을 알 수 있다.

그런데 확인해보면 돌아가기 버튼이 없어서 하나 구현해주겠다.

다시 post_form.html 로 돌아가서...

endblock content 블록 위에다가 div 태그를 만들어주고 그 안에다가 a 태그를 만든다.

전에도 말했듯이 URL 은 하드코딩 형태는 최대한 피해주고 위에처럼 템플릿 태그 URL 을 이용해서 처리하는게 좋다.

그럼 다시 글쓰기 페이지로 가서 새로고침을 해주면...

이렇게 돌아가기 버튼이 이쁘게 잘 나타난다.

그럼 이제 글을 하나 작성해본다.

중복된 이름과 ValidationError 를 확인하기 위해서 다음과 같이 작성해준다.

그리고 작성완료 버튼을 누르면...

이렇게 에러 메시지가 뜨게 된다.

끝으로 :

  • 오늘은 세 번째 CSS 시간으로 글쓰기 페이지를 꾸며보았다.
  • 확실히 하드코딩보다 템플릿 태그를 하는게 편리하고 좋아보인다.
profile
하루를 의미있게 살자!

0개의 댓글