[TIL_Carrotww] 45 - 22/11/04

์œ ํ˜•์„ยท2022๋…„ 11์›” 6์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
54/138
post-thumbnail

๐Ÿ“Carrotww์˜ ์ฝ”๋”ฉ ๊ธฐ๋ก์žฅ

๐Ÿงฒ javascript fetch ์‚ฌ์šฉ๋ฒ•

๐Ÿ”

async function show_tag_fuc() {
    const response = await fetch('http://127.0.0.1:8000/music/', {
        headers:{
            'content-type':'application/json',
        },
        method:'GET',
    })
    // backend์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
    .then(response => {
        return response.json();
      })
    // Promise ์•ˆ์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ ๊บผ๋‚ด์˜ค๊ธฐ
    .then(data => {

        // console.log(data) // tag ๋ชฉ๋ก ํ™•์ธ
        var tags= document.getElementById("all_tags");
        for (i=0; i < data.length; i++){
            const tag = document.createElement("button"); // ๋ฒ„ํŠผ ์š”์†Œ ์ƒ์„ฑ
            tag.setAttribute("class","mylabel") // css class ์ง€์ •
            tag.setAttribute("onclick","TagsPick(this.innerText)") // ์„ ํƒํ•œ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ•ด๋‹น ํ•จ์ˆ˜ ํ˜ธ์ถœ
            tag.innerText = data[i]['category'] // ๋ฒ„ํŠผ์ด๋ฆ„ ๊ฐ’ ์ง€์ •
            const tags = all_tags.appendChild(tag) // all_tags ์•ˆ์— tag ์ถ”๊ฐ€
        }
    });
}

fetch๋กœ ํ•ด๋‹น url ์— get์„ ๋ณด๋‚ด์–ด db์— ์ €์žฅ์ค‘์ธ tag๋“ค์„ ๊ฐ€์ ธ์™€ html์— ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค.
then์ด ์ฒ˜์Œ์— ๋ญ”์ง€ ๋ชฐ๋ž๋Š”๋ฐ fetch ์‚ฌ์šฉ๋ฒ•์„ ์ฝ์–ด๋ณด๋ฉด ์กฐ๊ธˆ ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

fetch ์ž์ฒด๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ 

const music_data = fetch(url)
    .then((response) => {
      return response.json();
    })

์•ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

const music_data = fetch(url)
    .then((response) => {
      return response.json();
    })
    .then((data) => {
      let authors = data;
    })

์•„๋ž˜๋Š” post ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›์•„์™”์„๋•Œ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค
์‚ฌ์‹ค ๋˜‘๊ฐ™์€๋ฐ ์‚ฌ์šฉ๋ฒ•์„ ๋ชจ๋ฅด๋ฉด ์˜ˆ์‹œ๋ฅผ ๋ณด๊ณ  ์ตํžˆ๋Š”๊ฒŒ ๊ฐ€์žฅ ์ข‹๊ธฐ ๋•Œ๋ฌธ์—...ใ…Žใ…Ž
์„œ๋ฒ„๋Š” django๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”๋ฐ javascript ๋ถ€๋ถ„๋„ ํ•จ์ˆ˜๋ฅผ ์งœ๋Š”๊ฒŒ ํ•˜๋‹ค๋ณด๋‹ˆ ์žฌ๋ฐŒ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

const music_data = await fetch('http://127.0.0.1:8000/music_search/', {

        headers:{
            'content-type':'application/json',
        },
        method:'POST',
        body: JSON.stringify({

            "category":str
        })
    }).then((response) => { return response.json() })

๐Ÿงฒ django serializer ๋™์ž‘๋ฐฉ์‹

๐Ÿ” serializer data์— ์ ‘๊ทผ ์‹œ ๋ฐ”๋กœ ์ง๋ ฌํ™”๊ฐ€ ๋œ๋‹ค.
data๋Š” serializer์˜ to_representation ์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ 
wirte_only ์ธ ํ•„๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋‘ ๊ฐ€์ ธ์˜จ๋‹ค.
wirte_only๋ž€ password ๊ฐ™์ด ์“ฐ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ ํ•„๋“œ๋ฅผ ๋งํ•œ๋‹ค.
๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ dict ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“  ํ›„ key์—๋Š” ํ•„๋“œ์˜ ์ด๋ฆ„, value์—๋Š” ํ•„๋“œ์˜ to_representation ๋ฉ”์„œ๋“œ์˜ ๋ฆฌํ„ด๊ฐ’์„ ์ €์žฅ ํ›„ dict๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

๐Ÿงฒ javascript localstorage ์‚ฌ์šฉ๋ฒ•

๐Ÿ” ์‚ฌ์šฉ์ž client localstorage์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ

localStorage.setItem('tempdata', JSON.stringify(music_data));

tempdata ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ music_data๋ฅผ locatstorage์— ์ €์žฅํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.
์‚ฌ์šฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

var temp = JSON.parse(localStorage.getItem('tempdata'));

๋‚˜๋Š” json ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ด์—ฌ์„œ ์œ„์™€ ๊ฐ™์ด ํ•ด์ฃผ์—ˆ๊ณ  ๊ฐ์ฒด, ํ˜น์€ json ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ๋ง๊ณ  ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ด๋ผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ €์žฅํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

localStorage.setItem('tempdata', music_data);
var temp = JSON.parse('tempdata');

0๊ฐœ์˜ ๋Œ“๊ธ€