개발 14

[Django] reverse와 reverse_lazy 함수

reverse와 reverse_lazy reverse 함수 호출 즉시 장고 URLConfig를 읽어서 URL을 찾는다. 따라서 장고 URLConfig가 로드된 이후 호출되어야 한다. ex) 함수 뷰에서 reverse를 사용한다. 뷰에서 함수는 클라이언트 요청이 있을 때 호출된다. 해당 시점은 URLConfig가 로드된 이후의 시점이므로 reverse를 사용한다. reverse_lazy 장고 URLConfig가 로드된 이후에 URL을 찾겠다고 미룬다. 장고 URLConfig가 로드되기 전에 호출되어야 하는 경우 사용한다. ex) 클래스 뷰에서는 reverse_lazy를 사용한다. 서버를 실행하면서 class가 로드되어 정의될 때는 URLConfig가 로드되기 전이다. 따라서 URLConfig가 로드되기 전..

개발/Django 2024.04.20

[Git] 자주 사용하는 git 명령어 정리

git 명령어 정리 프로젝트에서 사용하는 git명령어들을 여기에 정리해두고 꾸준히 추가할 예정이다. #로컬 레포지토리 생성(.git 폴더 생성) git init #원격 레포지토리의 프로젝트를 로컬 저장소에 복사 git clone https://github.com/{계정명}/{레포지토리명}.git #현재PC의 모든 저장소에 공통으로 사용할 {유저명}으로 설정 git cofing --global user.name "{유저명}" #현재PC의 모든 저장소에 공통으로 사용할 {유저메일}로 설정 git config --global user.email "{유저메일}" #설정 정보 보기 git config --global {설정명} #설정 제거 git config --global unset {설정명} #현재PC의 모든..

개발/Git 2024.03.24

[Django] MTV 디자인 패턴

MTV(Model - Template - View)장고 프레임워크에서 사용하는 디자인 패턴으로, 프로젝트를 데이터 처리(Model)와 UI처리(Template), 인터페이스 처리(View) 세 부분으로 나누어 개발하는 방법이다. 스프링 프레임워크에서의 MVC(Model - View - Controller)와 1대1 대응한다는 면에서 발음상 MVT라고 부르기도 하지만 여기서 View의 의미는 MVC에서 UI 처리를 맡는 View가 아닌 인터페이스 처리를 하는 Controller의 역할을 하므로 MTV패턴이라고 한다. URL conf URL과 호출할 View의 매핑 정보를 가지고 View를 호출하는 역할을 한다.View정의된 Model(데이터)와 Template(뷰)를 적절히 호출하여 결과물을 생성하고 호출..

개발/Django 2024.03.18

[Django] 장고 프로젝트 시작하기 3편

데이터베이스 생성 및 마이그레이션 + 관리자 페이지(admin) 1. 데이터베이스 생성 및 마이그레이션 - 이전 포스팅에서, 서버를 실행했을 때 아래 이미지처럼 SQLite DB가 기본경로에 생성되었을 것이다. (db.sqlite3) - DB가 없을 경우 서버를 실행하면 기본적으로 SQLite DB가 생성된다. 아래와 같은 에러가 발생하는 이유는 DB가 생성되었지만 관리자 페이지(admin)에서 사용할 데이터베이스가 없기 때문에 마이그레이션을 진행하라는 의미이다. You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contentty..

개발/Django 2024.03.11

[Django] 장고 프로젝트 시작하기 2편

장고 프로젝트 생성 및 서버 실행 1. 장고 프로젝트 생성 - 아래의 명령을 수행하여 프로젝트를 생성한다. 여기서 config는 생성할 프로젝트 폴더명, .(현재 디렉터리) 는 config를 생성할 위치를 나타낸다. django-admin startproject config . - config 디렉터리 및 manage.py가 생성된다. 2. 서버 실행 - 생성한 기본 프로젝트를 실행하기 위해서 아래 명령을 사용한다. python manage.py runserver #기본 포트는 8000 - 서버가 정상 실행되면 127.0.0.1:8000을 통해 브라우저에서 아래 페이지를 확인할 수 있다. - 참고로 포트를 변경하여 실행하고 싶을 경우 아래와 같이 실행한다. python manage.py runserver..

개발/Django 2024.03.04

CGI, WSGI, WAS 개념 정리

CGI, WSGI, WAS란? 개념을 설명하기에 앞서 전체적인 구조도와 여기서 말하는 Web Server의 정의는 아래와 같다. Web Server 여기서 웹 서버는 정적 웹 서버를 의미한다. 클라이언트(브라우저 등)의 요청으로 정적 리소스(html, 이미지 등)를 가공하지 않고 그대로 반환하는 역할을 하는 것이 정적 웹 서버이다. 웹 서버 종류 : Apache, Nginx 참고로 동적 웹 서버는 정적 웹 서버에 웹 애플리케이션과 데이터베이스가 추가된 개념으로 위 구조도의 Server를 지칭한다. 웹 애플리케이션과 데이터베이스의 데이터를 이용하여 리소스를 가공해서 클라이언트에 제공한다. CGI(Common Gateway Interface) 정적인 웹 서버에 데이터를 가공처리할 수 있는 어플리케이션을 연결..

개발/이론 2024.03.01

[Django] 장고 프로젝트 시작하기 1편

개발 환경 세팅 및 장고 패키지 설치 개발 환경(OS) : Windows11 사용한 개발 툴 : Visual Studio Code (VSCode) 1. 프로젝트 폴더 생성 - 프로젝트의 루트 폴더를 생성합니다. 저는 django_proj로 생성하였습니다. 2. 확장 프로그램 설치 - 장고(Django), 파이썬(Python) 확장 프로그램을 마켓플레이스에서 검색 후 설치합니다. 3. 파이썬 가상환경 세팅 - 아래 명령을 통해 파이썬에서 제공하는 가상환경을 구성합니다. - python -m venv {생성할 가상환경 루트 디렉터리} - 코드 실행 및 패키지 설치 등을 가상환경에서만 수행하여 다른 프로젝트와 독립된 환경을 구성할 수 있다. python -m venv venv_proj 4. 가상환경 활성화 -..

개발/Django 2024.02.27

SPA와 MPA 개념 및 장단점 정리

SPA(Single Page Application) 한개의 페이지로 구성된 애플리케이션 웹애플리케이션에 필요한 모든 정적 리소스(HTML, CSS, JS)를 최초 한번만 받고 이후의 요청은 페이지 갱신에 필요한 데이터만 전달 받아 갱신하는 방식 CSR(Client Side Rendering) 방식 (SPA가 모두 CSR방식을 사용하지는 않는다.) 장점 자연스러운 사용자 경험 필요한 부분만 처리하여 트래픽 감소와 로딩 속도 증가 서버에서의 완전한 HTML 생성에 필요한 연산(렌더링)을 클라이언트 처리로 분산하여 서버 부하 감소 모듈화 및 컴포넌트 개발 용이 백앤드와 프론트앤드의 개발 영역을 명확하게 구분할 수 있다. 단점 최초 요청 시 정적 리소스 파일을 한번에 받기 때문에 초기 로딩 속도가 느리다 -> ..

개발/이론 2024.02.21

[Python] 데이터 자료형(Data type)

데이터 자료형(Data type) 정리 ● int - ex) 212312312312312312312312312312312... - 기억 장소의 크기와 범위가 무제한 ● float - ex) 1230.3123111, 2.3E10 ● complex - ex) 2 + 3.7j ● bool - ex) True / False ● str - ex) "String", 'String', "'String'", '"String"' """String multiplelines""" - 기억 장소의 크기와 범위가 무제한 ● list - ex) [1.0, 'string', True] - 혼합 형태의 자료형을 포함 - 원소의 수정 가능 - 원소간 순서가 있음 ● tuple - ex) (2.4, "String", True) - 혼합..

개발/Python 2024.02.20

[Python] 코딩 규약(Coding Conventions)

코딩 규약(Coding Conventions) 목적 코드의 작성 규칙이 실행 결과에는 크게 영향을 끼치지는 않으나, 일관된 형식을 갖추어 코드를 작성하게 함으로써 더 향상된 품질의 소스를 통해 유지보수를 용이하게끔 할 수 있다. 대표적인 코딩 규약 명세서 : PEP 8 PEP 8 코딩 규약 명세서 내용 - 들여쓰기 공백 4칸 - 최상위 함수, 클래스 정의 2줄 띄어 쓰기 - 클래스 내 메소드 정의 1줄 띄어 쓰기 - [] 안, () 안, ,(콤마), :, ; 등의 앞에는 공백 제거 - i, I, O는 문자 구분이 어려워 가급적 사용않기 - 모듈명은 간단한 소문자로 구성, 필요시 밑줄 구분 - C/C++ 확장 모듈은 밑줄로 시작 - 클래스명은 카멜 표기법 작성 - 시스템 내부적으로 사용하는 객체명 앞에는 ..

개발/Python 2024.02.12