728x90 반응형 Python/Django16 [Django]. CRUD 더 알아보기 Django는 Model을 통해서 데이터베이스와 소통한다. Django는 Model을 정의하면 ORM을 통해서 데이터베이스에 데이터를 추가하고(Create) 조회하고(Read) 수정하고(Update) 삭제(Delete)할 수 있도록 하는 편리한 기능을 제공한다. 그러한 기능들은 Model의 'objects'를 이용해서 수행하게 되는데 쉽게 말해서 objects는 Model을 정의하면 생성되는 데이터베이스 관리 매니저로 데이터베이스와 관련된 편리한 기능을 제공하는 객체라고 생각하면 되겠다. 데이터베이스와 소통하는 네가지 방법. CRUD에 대해 조금 더 알아보도록하자. 데이터 추가하기 (Create) 데이터를 추가하기 위해서는 import를 이용해서 먼저 사용할 Model을 불러 와야 한다. from {ap.. 2023. 1. 30. [Django] Migrations & Migrate 모델을 작성하고 나면 꼭 해줘야하는 것이 있는데, 그것은 바로 마이그레이션이다. 마이그레이션(Migration)은 모델(Model)의 변경 사항 즉 Django 프로젝트의 데이터 구조 변경 사항을 관리하기 위한 Django만의 관리 방법이다. 변경될 때마다 히스토리를 하나씩 만들어 두고 마치 블럭을 갈아 끼우듯 생성한 히스토리를 실제 데이터베이스에 반영하는 것. 그리고 이 모든 과정은 Django의 ORM(Object-Relational Mapping)을 통해 진행된다. python manage.py makemigrations python manage.py migrate makemigrations 모델의 변경 사항을 인식해서 새로운 마이그레이션을 만든다. 이때 마이그레이션은 각 앱 디렉토리 내 migra.. 2023. 1. 30. [Django] Model Field Django Model은 대부분의 데이터를 저장할 수 있는 필드(Field)를 지원하는데 모든 필드에 사용할 수 있는 공통 옵션이 있고, 각각의 필드마다 가지고 있는 고유 옵션이 있습니다. 여기서는 자주 사용할 만한 몇 가지 필드와 옵션을 살펴보겠습니다. 필드(Field) 필드(Field)는 데이터 테이블에서의 열(column), 즉 데이터의 속성을 의미합니다. CharField class CharField(max_length=None) 제한된 길이의 문자열을 위한 필드입니다. max_length 필수 인수이며 입력할 최대 길이를 설정합니다. IntegerField class IntegerField() 정수 값을 위한 필드이며 -2147483648 부터 2147483647 범위를 지원합니다. Boolea.. 2023. 1. 30. [Django] 상태 코드(Status Code) 상태 코드(Status Code)는 클라이언트 요청에 대한 처리가 성공했는지 실패했는지에 대해 알려주는 코드로 앞자리에 따라 크게 5가지 카테고리로 분류됩니다. 아래는 각 분류별 몇 가지 상태 코드입니다. 1XX (정보 전달) 100 (진행, Continue) 요청의 첫 부분을 받아서 다음 요청을 기다리고 있다는 것을 알려 줍니다. 이미 요청을 완료했다면 해당 응답을 무시할 수 있습니다. 101 (프로토콜 전환, Switching Protocol) 클라이언트가 서버에게 프로토콜 전환을 요청했고 서버에서 프로토콜을 변경한다는 것을 나타냅니다. 2XX (성공) 200 (성공, OK) 클라이언트의 요청이 성공적으로 처리되었다는 것을 의미하며 주로 요청한 페이지를 서버가 제공했다는 것을 알려줍니다. 201 (작.. 2023. 1. 30. [Django] Template Language 장고에는 템플릿 언어라는 것이 있는데 이것을 잘 활용하면 원하는 값을 출력하여 사용할 수 있다. 크게는 4개로 나눌 수 있다. 1. 템플릿 변수 {{변수명}} {{변수명.속성}} : 우리가 지정한 데이터로 변환 , view에서 넘겨 받은 값으로 변환 모델에서 지정한 속성을 지정할 수 있다. 2. 템플릿 태그 {% 태그 %} {% end태그 %} : 템플릿 작성에 로직을 사용/ 반복/조건/상속 end태그가 꼭 필요한 태그들이 있다. for,if,block 등 3. 템플릿 필터 {{변수명 | 필터}} : 템플릿 변수를 특정 형식으로 변환 4. 템플릿 주석 {# 주석 #} : 템플릿 언어의 주석처리를 담당 템플릿 변수 (Template Variable) {{ variable }} 템플릿 변수는 템플릿이 렌더될.. 2023. 1. 29. [Django] render( )함수 render( ) render( request, template_name, context=None, content_type=None, status=None, using=None ) render 함수는 인자로 주어진 템플릿을 사전형(dict) 인자인 context와 결합해서 렌더링을 거친 다음 HttpResponse 객체로 반환하는 함수. 쉽게 말하면 인자로 넘겨주는 템플릿과 context 데이터를 합쳐서 HttpResponse 객체로 돌려주는 함수. 필수 인자 이 중에서 필수인자는 request와 template_name 이다. request에는 데이터를 요청한 요청 객체를 넘겨준다. 앞에서 함수형 view의 인자로 들어온 request를 render에 그대로 사용했다 ... def view(reques.. 2023. 1. 29. [Django] URL Routing 장고에서 url을 입력하면 어떤 url을 입력하던지 간에 가장 먼저 보는 파일은 프로젝트 앱 디렉토리 안에 있는 urls.py이다. 그 이유는 settings.py를 보면 알 수 있다. 장고가 url을 보고 가장 먽 어떤 파일을 봐야 할지 설정하는 부분이다. urls.py에 들어가보면 요청받은 앱의 경로가 맞는지 확인한 후 맞다면 뒤에 있는 restaurant안에 있는 urls.py를 보라고 알려주는 것이다. 그 다음 restaurant안에 있는 urls.py를 보자면 나머지 경로에 있는 패턴에 매칭이 된다면 매칭된 경로의 views.py에 가서 index함수의 로직을 실행하는 것이다. runserver을 실행하여 개발서버를 열어보면 index함수가 잘 실행되는 것을 볼 수 있다. 2023. 1. 29. [Django] runserver 장고에서 코드를 작성하고 결과를 학원하면 꼭 하는 작업 중 하나가 runserver를 이용해서 서버를 실행하는 것이다. django-admin runserver python manage.py runserver 그렇게 서버를 실행하고 나면 웹 브라우저를 통해서 만든 장고프로젝트에 접속할 수 있다. 이 과정에서 웹 브라우저로 접속했을 때 우리가 만든 장고 프로젝트를 보여주는 역할을 하는 것을 서버라고 한다. 이렇게 runserver로 실행한 서버를 개발서버(Development Server)라고 한다. 그 이유는 보안과 관련된 사항이나 성능을 보장하지 않는 확인용 서버이기 때문이다. 그래서 실제 배포 시에는 개발서버에서는 없던 오류들이 발생할 수 있다. 숨어있는 IP와 Port django-admin run.. 2023. 1. 29. [Django] 장고의 철학 Reusable App 장고는 재사용성이 있는 App을 추구하고 있다. 세계적인 장고 컨퍼런스인 djangocon에선 4가지컨셉을 제시하였다. 1. 한가지 앱은 한가지 기능을 하고, 그 기능을 잘 수행해야한다. 2. 장고 개발자는 프로젝트를 많은 앱으로 구성하는 것을 두려워하면 안된다. 3. 각각의 앱을 유연하게 작성해야 한다. 4. 다른 사람에게 배포가 가능하도록 만들어야 한다. DjangoCon: Reusable App 영상 바로가기 2023. 1. 28. 이전 1 2 다음 728x90 반응형