์ค๋ ์ฃผ์ ์ฌํญ (5/17, ์์์ผ)
- ๋ณต์ต - MongoDB, flask
- ์ฌ์ ๋ ฌ - ๋ถํธ์คํธ๋ฉ
๊ฐ๊ฐ์ด ์๊ทธ์ ๊ฐ์๋ฐ (์ค์ ๋ก ์๊ทธ์ ์ด๊ธด ํจ) ๋ฒ์จ ์์์ผ. ์ฒซ ํ ํ๋ก์ ํธ๋ ๋ฒ์จ ์ค๋ฐ๊น์ง ์๋ค. ์ ๋ช๋ ๊ฐ ๋ ธ์ ๋ง ์ฐ๋ค๊ฐ, ๋ฒจ๋ก๊ทธ๋ฅผ ์ฒ์ ์จ๋ณด๋ฉด์ ์ ์ํ๊ธฐ๊ฐ ์ฝ์ง ์์๋๋ฐ ์กฐ๊ธ์ ์ต์ํด์ง ๊ฒ ๊ฐ๋ค. ์๋ฌดํผ ์ด์ฐ์ด์ฐ TIL ์์ฑ 3์ผ์ฐจ.
๋งค์ผ ์์นจ 2์๊ฐ ๋์์ ์์ต์ธ๋ฐ, ์ค๋์ DB์ API ๋ช ๋ น์ด์ ๋ํด ๋ณต์ต๋ถํฐ ํด๋ณด๊ธฐ๋ก ํ๋ค (ใ ) ๋ณต์ต ๋ด์ฉ์ ์๋์ ์ ์ด๋๋ฉด ์ฝ๊ธฐ ํผ๋กํด์ ธ์, ๊ธ์ ๋ฐ๋ก ์์ฑํ๋ค.
โ๏ธ pymongo๋ก MongoDB ์์ํ๊ธฐ
โ๏ธ flask ์์ํ๊ธฐ
$(document).ready()
๋ณต์ต์ ํ๋ค๊ฐ ์ฝ๋๋ฅผ ๋ณด๋๋ฐ ๋ฌธ๋... $(document).ready(function() {});
์ ๋ญ๊น? ์ถ์ด์ ธ์ ์ฐพ์๋ณด์๋ค.
$(document).ready()
๋ ๋ฌธ์๊ฐ ์ค๋น๋๋ฉด ๋งค๊ฐ๋ณ์๋ก ๋ฃ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๋๋ก ํ๋ ๋ช
๋ น๋ฌธ์ด๋ค. ์ด๋ฒคํธ ๋ฉ์๋์ธ window.onload
์ ๋น์ทํ ๊ธฐ๋ฅ์ ์ํํ๋ค๊ณ ๋ณผ ์ ์๋ค.
$(document).ready(function() {
show()
})
function show() {
alert("READY");
}
์ด๋ ๊ฒ ์์ฑํ๋ฉด ํ์ด์ง๋ฅผ ์คํํ์ ๋ "READY"๊ฐ ์ ํ ์ฐฝ์ด ๋ฌ๋ค. (= ๋ฌธ์๊ฐ ์ค๋น๋์์ผ๋ฏ๋ก)
๋ฐฑ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฐ์๊ธฐ ์ ๋ ฌ์ด ํํธ๋ฌ์ ธ์ (ใ
ใ
) ๋ค์ ์ ์ข ๋ณด๊ธฐ๋ก ํ๋ค. - ์ค๊ฐ ๋ณธ๋ฌธ๊น์ง๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋ฉค๋ฒ ๋ชฉ๋ก์ ๋ถ๋ฌ์ฌ ๋๋ถํฐ ์ ๋ ฌ์ด ๋ง์ง ์์๋ค. ์๋ง JavaScript
๋ฅผ ํตํด html
์ฝ๋๋ฅผ ํธ์ถํ๋ค๊ฐ ๊ผฌ์ธ ๋ฏ.
๊ฐ๋จํ๊ฒ ๋ฐ์ํ ์น์ ๋ง๋ค ์ ์๋ ๋๊ตฌ์ด์ง๋ง, ์ฃผ์๊ฐ ์ข ํ์ํ ๊ฒ ๊ฐ๋ค. ์๋ฅผ ๋ค์ด์ ์๋์ฒ๋ผ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ ์์น๋ฅผ ํ๋์ฝ๋ฉ์ผ๋ก ์กฐ์ ํ๋ฉด ์ด์ํ๊ฒ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
.card-img-top {
width: 200px;
height: 200px;
}
ํ์ฌํผ ํ์ ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ์ฝ๋๋ก ์กฐ์ ํ๋ ค๋ ์ค์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ์กฐ๊ธ ์ ๋ฅผ ๋จน์๋ค. ์ ๋ ฌ์ ๋ง์ถ๊ธฐ ์ํด ์ด ์ฝ๋๋ ์ญ์ ํ๊ณ , ์ฌ์ง์ ๋์ผํ๊ฒ ์๋ผ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํ์ํ๋ค.
ํ๋์ฝ๋ฉ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์กฐ์ ํ๊ณ ์ถ์ผ๋ฉด css
์์ ํด๋์ค๋ฅผ ๊ฑด๋๋ฆฌ๋๊ฒ ์๋๋ผ, ์๋์ฒ๋ผ <html>
๋ด์์ <style>
ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ ์กฐ์ ํด์ฃผ์ด์ผํ๋ ๊ฒ ๊ฐ๋ค. (ํํฐ๋ ์๋ฃจ์
)
<div style="position: relative; padding-top: 66.5%; overflow: hidden;">
<img src="https://i.postimg.cc/cL1MD7J7/image.png" class="card-img-top"
style="position: absolute; top: 0px; left: 0; right: 0; bottom: 0; max-width: 100%; height: auto;" />
</div>
<img>
ํ๊ทธ๋ฅผ <div>
ํ๊ทธ๋ก ํ ๋ฒ ๊ฐ์ธ์ฃผ์๊ณ , <img>
ํ๊ทธ ๋ด์์๋ style
์ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉํ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ๊ฒ ์จ์ฃผ๋ฉด ์๋์ ๋ฐ์ํ ์น์ฒ๋ผ ๋ฌธ์ ์์ด ์๋๋๋ค. ํ์ง๋ง ์ฌ์ง๋ง๋ค ๊ฐ์ ์ง์ ๊ณ์ฐํด์ ์
๋ ฅํด์ค์ผํ๊ธฐ ๋๋ฌธ์ ๋ถํธ์คํธ๋ฉ์์, ๋ ์ฌ์ง์ ์ข
๋ฅ๊ฐ ๋ค์ํ ์ง๊ธ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํฌ๊ฒ ํจ์จ์ ์ด์ง๋ ์๋ค๋ ๋จ์ ์ด ์์๋ค. (padding-top: 66.5%;
์ ๊ฒฝ์ฐ ํํฐ๋์ด ์ด๋ฏธ์ง์ ๋ง๊ฒ ์ง์ ๊ณ์ฐํ์
จ๋ค๊ณ ํ๋ค)
์ฌ์ง์ ์๋ฅด๋ ๊ฒ์ผ๋ก ์ผ๋จ๋ฝ ๋์์ง๋ง, ์ธ์ ๊ฐ ๋ ์จ์ผํ ์ผ์ด ์์ ์๋ ์์ผ๋ ๊ธฐ์ต์ ํด๋์!
[์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ ์น๊ฐ๋ฐ ์ข
ํฉ๋ฐ] ๊ฐ์์ ์ฐ์ฅ์ ์ธ ํ๋ก์ ํธ๋ผ์ ๋ถํธ์คํธ๋ฉ
์ ๊ณ์ ์ฌ์ฉํ๊ณ ์๋ค. ์นด๋
๊ฐ ์๋ ๋ค๋ฅธ ๊ธฐ๋ฅ(ํ
ํ๋ฆฟ?)์ ์๋ ์ฐพ์๋ดค์ง๋ง, ์ฌ์ง๊ณผ ๊ธ์๋ฅผ ๊น๋ํ๊ฒ ๋ฌถ์ ์ ์๋ ๊ฑด ์นด๋๋ผ๊ณ ์๊ฐํด์ ์นด๋๋ฅผ ๊ณ์ ์ฌ์ฉํ์๊ณ ์๊ฐํ์๋ค.
๋ถํธ์คํธ๋ฉ ์นด๋(Cards)์ ๋ํ ๊ณต์ ๋ฌธ์
ํ์ฌํผ ๋ถํธ์คํธ๋ฉ์ด ๊ทธ๋ฆฌ๋
ํํ์ ์ ๋ ฌ์ ์ง์ํ๋๋ฐ, ์ฌ์ฉํ๋ ค๋ฉด <div>
ํ๊ทธ๋ก ํ ๋ฒ ๋ฌถ์ด์ค์ผํ๋ค. ๊ทธ๋ฆฌ๋ ์ ๋ ฌ์ ์ํด <div>
ํ๊ทธ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๊ณ , ๊ทธ๋ฆฌ๋ ์์คํ
์์ ์ง์ํ๋ ํด๋์ค๋ค์ ํธ์ถํด์ฃผ์ด์ผ ํ๋ค.
๋ถํธ์คํธ๋ฉ ๊ทธ๋ฆฌ๋ ์์คํ ์ ๋ํ ๊ณต์ ๋ฌธ์
์๋์ ๊ฐ์ด ์์ฑํ๋ฉด ๊ฐ๋ก ์ ๋ ฌ
์ด๋ฉด์, ์ด ์๋ 1์ด
๋ก 1์ด์ 5๊ฐ์ ์นด๋
๊ฐ ์ ๋ ฌ๋๋๋ก ํด์ค๋ค.
<div class="row row-cols-1 row-cols-md-5 g-1">
<!-- ์ฌ๊ธฐ์ ํ์ ์ ๋ณด๋ฅผ ๋ด์ ์นด๋ -->
</div>
๊ทธ๋ฆฌ๋ ์ ๋ ฌ
์ด ์๋๋๋ฐ?์ด๋ฐ์ ์์ ํ๋ฏ JavaScript
๋ฅผ ํตํด html
์ฝ๋๋ฅผ ํธ์ถํ๋ค๊ฐ ๊ผฌ์ธ ๊ฒ์ด ๋ฌธ์ ์๋ค. ๊ฐ ์นด๋๋ค์ ํ์์ ๊ธฐ๋ณธ ์ ๋ณด(ํน์ง)๋ค์ ๋ด๊ณ ์์ด์ผํ๋๋ฐ, ๊ทธ ์ ๋ณด๋ฅผ DB๋ฅผ ํตํด ๋ฐ์์ค๋ ค๋ค๊ฐ ์์ <div>
ํ๊ทธ๋ก ๊ฐ์ธ์ฃผ์ง ๋ชปํ ๊ฒ.
๋ฐฑ์๋ ๋ด๋น ํ์ ๋ถ์ด ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์์ฑํ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด, #members
๋ผ๋ id
๋ฅผ ์ฌ์ฉํด append([html์ฝ๋]);
ํ๋ ๊ฑธ ์ ์ ์๋ค
// ์๋ถ๋ถ ์๋ต
$('#members').append(temp_html);
// ๋ท๋ถ๋ถ๋ ์๋ต
์ธ์์ด 5๋ช
์ด๋ค๋ณด๋, for
๋ฌธ์ผ๋ก ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๊ณ ์์ด ํ๊ทธ๋ฅผ ์๋ค๋ก ๋ถ์ด๊ธฐ ์ฝ์ง ์์๋ณด์๋ค. ๊ทธ๋์ ํ๋์ฝ๋ฉ์ ํด์ผํ๋... ๋๊ฐํ๋๋ฐ, id
์์น๋ฅผ ์ฎ๊ฒจ์ฃผ๋ ๊ฒ์ผ๋ก ๋ค๋ฅธ ์ฝ๋ ์ถ๊ฐ๋ ์์ ์์ด ๊ฐ๋จํ ํด๊ฒฐ๋์๋ค.
<!-- member profiles -->
<h3 class="members">๐<span class="highlight"> CLOVER ํ์๋ค</span></h3>
<div class="members" id="members">
<div class="row row-cols-1 row-cols-md-5 g-1">
<!-- ์ฌ๊ธฐ์ ํ์ ์ ๋ณด -->
<!-- ์ฌ๊ธฐ์ ํ์ ์ ๋ณด -->
</div>
</div>
<!-- member profiles -->
<h3 class="members">๐<span class="highlight"> CLOVER ํ์๋ค</span></h3>
<div class="members">
<div class="row row-cols-1 row-cols-md-5 g-1" id="members">
<!-- ์ฌ๊ธฐ์ ํ์ ์ ๋ณด -->
<!-- ์ฌ๊ธฐ์ ํ์ ์ ๋ณด -->
</div>
</div>
(์ ๋ง๋ก ์ ์งํ๊ฒ ์์น๋ง ์ฎ๊ฒจ์ฃผ์๋ค)
1) ๋ ์์ง DB์ ์ฝํ๊ตฌ๋!!
์ฌ์ค ๊ฐ์์๋ฒ๋ ์์ฒญ ํค๋ฉ๋ค๊ฐ ์ค๋์์ผ ๊ฐ์ ์ก์๋ค.2)
after
ํจ๊ณผ์ ๋ํ ์์ด๋์ด ๋ถ์กฑ
๊ดํ ์๋ชป ๋ฃ์ผ๋ฉด ๋ฒ์ก์ค๋ฝ๊ธฐ๋ง ํ ๊ฒ ๊ฐ๋ค - ๊ฐ๋์ ๋จ์ํ๊ฒ ์ข์์ง๋ ๋ชจ๋ฅธ๋ค3) ๊ธ ์ฐ๋๋ฐ ์๊ฐ์ ๋๋ฌด ๋ง์ด ์ฐ๋?
์ฌ๋ฐ๋ ๊ฑธ ์ด๋กํด
๋ด์ผ์ ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น ~.~