개발/토막난 상식(241)
-
Response 와 JsonResponse
Response와 JsonResponse는 Django에서 HTTP 응답을 생성하기 위해 사용되는 두 가지 클래스입니다. Response: Response 클래스는 Django의 기본 HTTP 응답 클래스로, 텍스트, HTML, 이미지 등 다양한 종류의 응답을 생성할 수 있습니다. Response 클래스는 응답 본문(content), 상태 코드(status code), 헤더(headers) 등을 설정하여 HTTP 응답을 생성할 수 있습니다. 예를 들어, 텍스트 응답을 생성하려면 HttpResponse 클래스를 사용할 수 있습니다. JsonResponse: JsonResponse 클래스는 Response 클래스를 상속받은 JSON 형태의 HTTP 응답 클래스로, 딕셔너리, 리스트, JSON 직렬화 가능한 ..
2023.04.12 -
백엔드 에서 form값에 대한 검증을 하고 직렬 화 하는 게 좋을까? 직렬 화 하고 검증을 하는 게 좋을까?
일반적으로는 백엔드에서 form 값에 대한 검증을 먼저 수행한 후 직렬화하는 것이 좋습니다. 이는 데이터의 무결성을 보장하고, 유효성을 확인한 데이터가 직렬화되어 다른 시스템으로 전송되거나 저장될 때 잘못된 데이터가 전달되는 것을 방지하기 위함입니다. 데이터 검증은 입력된 데이터의 유효성을 확인하는 과정으로, 예상대로 올바른 형식, 범위, 구조를 갖고 있는지를 확인하고 오류나 이상이 있는지를 찾는 것입니다. 백엔드에서 form 값에 대한 검증을 수행하여 유효성을 확인한 후, 검증에 통과한 데이터만 직렬화하여 전송하거나 저장하게 되면, 무결성이 보장되는 데이터가 전송되거나 저장될 수 있습니다. 반면에, 먼저 직렬화를 수행한 후에 검증을 수행하게 되면, 검증에 통과하지 못한 데이터가 이미 직렬화되어 다른 형..
2023.04.12 -
약한 복사와 깊은 복사
객체 또는 변수의 복사 방법을 설명하는 용어 약한 복사(Shallow Copy 또는 Shallow Copying): 약한 복사는 원본 객체 또는 변수의 주소를 복사하여 새로운 객체 또는 변수를 생성하는 것을 말합니다. 즉, 원본과 복사본은 같은 객체를 참조하게 됩니다. 이 경우, 복사본의 변경이 원본에 영향을 미칠 수 있습니다. 원본과 복사본은 동일한 내용을 가지지만, 두 개의 객체가 독립적으로 존재하는 것이 아니라 원본과 복사본이 같은 객체를 공유하게 됩니다. 예를 들어, 리스트 객체의 경우 약한 복사를 수행하면 두 개의 리스트가 같은 원소를 참조하게 됩니다. 따라서 한 리스트를 변경하면 다른 리스트도 동일한 변경이 반영됩니다. original_list = [1, 2, 3, 4, 5] shallow_c..
2023.04.12 -
antd 상위 셀과 값이 같을 경우 셀 병합
const renderCell = (value, row, index) => { const obj = { children: value, // 셀에 표시될 값 props: {}, // 셀의 속성을 설정할 객체 }; if (index > 0 && row.hirkCommCd === codeData[index - 1].hirkCommCd) { // 이전 행과 현재 행의 상위코드 값이 같다면, 병합할 필요가 없으므로 rowSpan을 0으로 설정 obj.props.rowSpan = 0; } else { // 현재 행의 상위코드 값과 다른 행을 찾아서 연속된 행의 개수를 구함 for (let i = index; i < codeData.length; i++) { if (row.hirkCommCd !== codeData[..
2023.04.11 -
POST PUT
POST - 생성 PUT - 수정, 없을시 생성
2023.04.06 -
conda 명령어
conda --version update conda create -n 가상환경이름 python=x.x env remove --name 가상환경이름 activate 가상환경이름 deactivate env list
2023.04.06 -
.catch() VS try-catch
try { deleteCode(codeKey) .then(() => { dispatch(codeAction.getCodeList({ target: "codeList" })); codeForm.resetFields(); }); } catch(e) { console.error(e); } deleteCode(codeKey) .then(() => { dispatch(codeAction.getCodeList({ target: "codeList" })); codeForm.resetFields(); }) .catch((e) => { console.error(e); }) 위의 코드는 try-catch 구문으로 에러를 처리하려고 시도하고 있습니다. deleteCode 함수가 반환하는 Promise가 reject 되면 c..
2023.04.05 -
redux-toolkit
redux-toolkit은 Redux 라이브러리를 사용하여 상태 관리를 간소화하고 효율적으로 처리할 수 있도록 하는 오픈소스 라이브러리입니다. Redux는 단방향 데이터 흐름 패턴을 사용하여 상태를 관리합니다. 하지만 Redux의 기본 구성은 일정한 작업량이 필요합니다. redux-toolkit은 Redux의 구성을 간단하게 만들고, 코드를 짧게 만들 수 있도록 해주는 도구 모음입니다. redux-toolkit의 주요 기능 중 하나는 createSlice 함수입니다. 이 함수는 상태와 리듀서를 생성하는데 사용됩니다. 상태는 리덕스 스토어에서 관리하는 상태를 의미하며, 리듀서는 액션을 처리하여 상태를 변경하는 함수입니다. createSlice 함수를 사용하면 상태와 리듀서를 하나의 파일에 작성하여 코드 관..
2023.04.04 -
.then((response) => response.data);
export const getRooms = () => instance.get("rooms/").then((response) => response.data); export const getRooms = () => instance.get("rooms/") 차이점 getRooms 함수에서 두 번째 줄인 instance.get("rooms/")는 Axios 인스턴스 instance를 통해 "rooms/" 엔드포인트로 GET 요청을 보내고, 이에 대한 응답을 Promise로 반환합니다. 이후 .then()을 통해 응답 데이터인 response.data에 접근하여 해당 데이터를 반환하도록 되어 있습니다. 두 번째 코드는 getRooms 함수가 instance.get("rooms/")만을 반환하도록 수정한 것입니다...
2023.03.31 -
리액트 연습 코드 모음
리액트 날씨 import React, { useEffect, useState, useRef } from "react"; import axios from 'axios'; export function Weather({ }) { //시계 useEffect(() => { navigator.geolocation.getCurrentPosition(naviGood, naviBad) const id = setInterval(() => { setTime(new Date()); }, 1000); return (() => clearInterval(id)) }, []); const [time, setTime] = useState(new Date()); //날씨 const [weather, setWeather] = useSta..
2023.03.31