항해99/웹개발종합반PLUS

웹개발종합반PLUS 4주차

숲별 2022. 9. 19. 19:14
728x90

Bulma : 우리가 써봤던 Bootstrap과 비슷하게, 미리 정해진 모습의 클래스를 가져다쓸 수 있는 무료 CSS 프레임워크

  • Bootstrap은 jQuery을 써서 웹사이트에서의 상호작용을 쉽게 구현할 수 있는 반면, Bulma는 순수한 CSS 프레임워크이기 때문에 기능을 직접 구현해야하지만 대신 더 자유롭게 커스터마이징이 가능해요.
  • Bootstrap은 커뮤니티가 커서 테마나 플러그인 등이 개발이 많이 되어있고 질문에 대한 답이나 예시 등을 찾기 쉽고, Bulma는 문법이 직관적이고 Flexbox 등 최신기술을 많이 써요!

 

개인적으로 가장 중요한 이유 벌마의 기본 모양이 부트스트랩보다 더 예쁨.

 

https://bulma.io/documentation/

 

Bulma: Free, open source, and modern CSS framework based on Flexbox

Bulma is a free, open source CSS framework based on Flexbox and built with Sass. It's 100% responsive, fully modular, and available for free.

bulma.io

 

 

<패키지설치>

flask, pymongo, pyJWT

 

설정-언어 및 프레임워크-템플릿언어-Jinja2

 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title>Bulma 쓰는 법 연습하기</title>
        
        <!-- Bulma CSS 링크 -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">

    </head>
    <body>

    </body>
</html>

 

 

 

구역을 나눠주는 게 보통 div지만 워낙 많이 쓰다보니 확실하게 나눠줄 수 있는 게 section

 

열심히 코드스니펫 복붙해서 실행했는데 강사랑 다른 화면이 떴다.

파이썬 터미널에도

jinja2.exceptions.TemplateNotFound: login.html

라고 떠서 구글링

 

세상 쉬운 문제인지 한글 블로그도 있네ㅎ

https://exchangeinfo.tistory.com/64

 

jinja2.exceptions.TemplateNotFound 해결법

jinja2.exceptions.TemplateNotFound 웹도 처음 손대봤는데 처음 보는 flask로 뭔가를 하려니 하나도 안된다.. 하하하핳 저 에러로 검색해보면 가장 먼저 뜨는게 stackoverflow 글이다. 누군가 친절히 링크를 해.

exchangeinfo.tistory.com

 

나 왜 html들 templates에 안 넣었느뇨..ㅎㅎㅎ

해결! 오오 구글링..❤️

 

function is_nickname(asValue) {
    var regExp = /^(?=.*[a-zA-Z])[-a-zA-Z0-9_.]{2,10}$/;
    return regExp.test(asValue);
}

function is_password(asValue) {
    var regExp = /^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z!@#$%^&*]{8,20}$/;
    return regExp.test(asValue);
}

()안이 필수포함, []가 선택 포함, {글자수최소, 글자수 최대}

일반적으로 많이 쓰는 정규식(아이디, 패스워드, 휴대전화 확인 등)은 인터넷에 많이 있어서 인터넷에서 가져다 쓰면 됨.

조건 빼거나 길이 바꿀 땐, 위 설명 참고.

 

<css파일을 따로 만들 때 넣어줄 코드>

<link href="{{ url_for('static', filename='mystyle.css') }}" rel="stylesheet">

static 안에 mystyle만들고 주의할 점은 위 css 파일 링크는 벌마css보다 아래에 위치해야 함.

우리는 이미 bulma css가 정의 되어있고 그걸 계속 수정하는 방향이기 때문

 

<모달>

모달은 항상 3가지 구조로 되어있다.

모달 백그라운드, 모달 content, 모달 close

<div class="modal" id="modal-post">
                <div class="modal-background" onclick='$("#modal-post").removeClass("is-active")'></div>
                <div class="modal-content">
                    <div class="box">
                        <article class="media">
                            <div class="media-content">
                                <div class="field">
                                    <p class="control">
                                        <textarea id="textarea-post" class="textarea"
                                                  placeholder="무슨 생각을 하고 계신가요?"></textarea>
                                    </p>
                                </div>
                                <nav class="level is-mobile">
                                    <div class="level-left">

                                    </div>
                                    <div class="level-right">
                                        <div class="level-item">
                                            <a class="button is-sparta" onclick="post()">포스팅하기</a>
                                        </div>
                                        <div class="level-item">
                                            <a class="button is-sparta is-outlined"
                                               onclick='$("#modal-post").removeClass("is-active")'>취소</a>
                                        </div>
                                    </div>
                                </nav>
                            </div>
                        </article>
                    </div>
                </div>
                <button class="modal-close is-large" aria-label="close"
                        onclick='$("#modal-post").removeClass("is-active")'></button>
            </div>

 

 

let class_heart = ""
if (post["heart_by_me"]) {
    class_heart = "fa-heart"
} else {
    class_heart = "fa-heart-o"
}

를 '조건부 삼항 연산자(ternary operator)'를 이용해 한 줄로 나타내기

let class_heart = post['heart_by_me'] ? "fa-heart": "fa-heart-o"

?앞이 조건.  True일 때:False일 때

 

 

static 안에 자바스크립트파일을 만들어 <script>안의 내용을 가져오면(js안에서 <script></scipt>는 필요 없음.)

그리고 저 script가 필요한 파일마다 아래 코드를 head에 넣어주면 된다.

<script src="{{ url_for('static', filename='myjs.js') }}"></script>

 

 

og(Open graph)태그란 링크를 보냈을 때 뜨는 미리보기 이미지. 메타태그의 종류 중 하나로 '제목, 설명, 이미지, 링크, 타입' 등을 넣을 수 있다.

<meta property="og:title" content="스위터 - 세상을 달달하게"/>
<meta property="og:description" content="mini project for Web Plus"/>
<meta property="og:image" content="{{ url_for('static', filename='ogimg.png') }}"/>

 

favicon.ico(아이콘 파일 확장자)이란 상단 탭에 보여지는 아이콘으로 즐겨찾기 등록시에도 사용됨. 적용 안된 사이트는 브라우저 고유의 아이콘으로 뜸.

<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">