개발(250)
-
나도 장고에선 CBV가 좋아
https://velog.io/@heka1024/%EB%82%B4%EA%B0%80-Django%EC%97%90%EC%84%9C-Class-Based-View%EB%A5%BC-%EB%8D%94-%EC%84%A0%ED%98%B8%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0 내가 Django에서 Class Based View를 더 선호하는 이유 나는 왜 Class-based View를 더 사랑하는가? velog.io CBV의 장점 GET, POST 등 HTTP 메소드에 따른 처리 코드를 작성할 때 if 함수 대신에 메소드 명으로 코드의 구조가 깔끔하다. 다중상속 같은 객체지향 기법을 활용해 제너릭 뷰, 믹스인 클래스 등을 사용해 코드의 재사용과 개발 생산성을 높여준다. 각각의 장단점이 존..
2023.04.18 -
antd Form 비활성화
import { Form, Input, Button } from 'antd'; const MyForm = () => { const onFinish = (values) => { // 폼 데이터 전송 시 처리 로직 // '이름' 필드의 값을 제외하고 처리 const { name, ...otherValues } = values; console.log(otherValues); }; return ( {/* 다른 폼 필드들 */} 전송 ); }; export default MyForm;
2023.04.18 -
함수 호출 방법
setFormFinishHandler 함수를 호출할 때에는 함수의 이름을 사용하거나, 함수를 호출하는 새로운 함수를 생성하여 전달하는 두 가지 방법이 있습니다. 1. setFormFinishHandler(codePostHandler) 형태로 함수의 이름 codePostHandler를 직접 전달하는 경우: setFormFinishHandler(codePostHandler); 이 경우 formFinishHandler가 codePostHandler 함수로 설정됩니다. 2. setFormFinishHandler(() => codePostHandler) 형태로 함수를 호출하는 새로운 함수를 생성하여 전달하는 경우: setFormFinishHandler(() => codePostHandler); 이 경우 formF..
2023.04.18 -
camelToSnakeCase & snakeToCamelCase
function camelToSnakeCase(str) { return str.replace(/([a-z])([A-Z0-9])/g, '$1_$2') .replace(/([0-9])([a-zA-Z])/g, '$1_$2') .toLowerCase(); } function camelToSnakeCase(str) { return str.replace(/([a-z\d])([A-Z])/g, '$1_$2') .toLowerCase(); } function snakeToCamelCase(str) { return str.replace(/([-_][a-z])/g, (match) => match.toUpperCase().replace(/[-_]/g, '')); } function snakeToCamelCase(str) { ..
2023.04.17 -
models 이름 설정 시 숫자 사용하지 않는 걸 권장
스네일 카멜 전환과정중 미리 협의가 없음면 etcRmkCn1 이 etc_rmk_cn_1 혹은etc_rmk_cn1 바뀔수 있음
2023.04.17 -
Ant Design의 Table 컴포넌트에서 ref를 사용하여 특정 column의 backgroundColor를 다른 column에 적용하는 기능
기능은 버전 4.7.0 이상에서부터 지원됩니다. 따라서 4.18 버전에서는 이 기능을 사용할 수 없습니다. 4.18 버전에서는 다른 방법을 사용해야 할 것입니다. 다만, 만약 4.18 버전에서 해당 기능을 구현해야 한다면, 다음과 같은 방법이 있을 수 있습니다. 1.데이터를 가공하여, 렌더링할 때 적용할 backgroundColor 값을 계산하여 넘겨주는 방법 const columns = [ { title: '상위코드', align: 'center', dataIndex: 'hirkCommCd', render: renderCell, }, { title: '공통코드', align: 'center', dataIndex: 'commCd', render: (text, record, index) => { const..
2023.04.17 -
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