일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 강원도속초맛집
- 부스트코스
- c언어문자열
- 아스키코드
- removetooltip
- 건대입구맛집
- richtext
- 남양주맛집
- 자바
- BeautifulSoup
- 가상환경
- 상속
- 장고
- 포인터
- 알고리즘
- 노마드코더
- 코딩독학
- JavaScript
- popupmenubutton
- 정렬알고리즘
- FLUTTER
- Python
- Django
- 추상클래스
- python3
- pipenv
- DOM
- 속초여행
- 성수동카페
- 컴퓨터과학
- Today
- Total
목록Framework/DJANGO (26)
YUYANE
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KnXOe/btqZpfkP0Hs/PPO1vE1sA0HGpJ4RKnFZk0/img.jpg)
학습 강의 nomadcoders.co/airbnb-clone/lobby 장고 프로젝트에서 명령을 실행할 때 아래와 같은 구문을 쓴다. 오늘은 정해진 명령어를 사용하는 대신 명령어를 커스터마이징 하는 방법에 대해 알아보자. python manage.py 명령어 디렉토리 구조 장고 프로젝트에서 어떤 앱이든 커스터마이징 한 command를 manage.py 에 등록할 수 있다. 우선, 아래와 같이 원하는 앱 폴더(polls)에 management/commands 디렉토리를 추가하자. polls/ __init__.py models.py management/ commands/ _private.py closepoll.py tests.py views.py 그러면 Django는 이름이 밑줄로 시작하지 않는 디렉토리의 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfvBkv/btqYwihlOVK/dYMRKBKM3luwctZ04wnekk/img.jpg)
model 메소드 오버라이딩 - 장고 model에는 데이터베이스 관련 작업을 담고 있는 메소드(아래 링크 참고)가 많은데, 원하는대로 커스터마이징이 가능하다. docs.djangoproject.com/en/3.1/ref/models/instances/#model-instance-methods - 부모 클래스를 호출하는 super()*를 사용한다. *super() 예시 - 부모 클래스 : Animal - 자식 클래스 : Cat class Animal(): def __init__(self, name): self.name = name def say(self): print("나는 동물이에요.") class Cat(Animal): def say(self): super().say() print("나는 고양이에요."..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c38TSq/btqYj9Nbmik/BFUYi7gh6Jtg6tnioBtPak/img.jpg)
학습 강의 nomadcoders.co/airbnb-clone/lobby MEDIA_ROOT - 장고에게 파일 업로드 하라고 알려주는 절대 경로; 파일이 저장 될 위치 - STATIC_ROOT와 달라야 한다. - config - settings.py 에서 설정 - 예시 코드 업로드 되는 파일은 'uploads' 폴더에 저장될 것이다. MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') MEDIA_URL - MEDIA_ROOT로 서브 된 미디어 파일을 처리하는 URL; - '/'로 끝나야 한다. - 시작할 때 '/'를 써야 절대 경로를 만들어준다. 그렇지 않으면 상대 경로가 생성되는데, 루트에서 시작하지 않고, 현재 위치 URL 끝에서 파일명이 붙는다. - 예시 MEDIA_U..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/P9NEr/btqYusKzntF/0ID0dknuTVkVhSl56QtOQK/img.jpg)
학습 강의 nomadcoders.co/airbnb-clone/lobby 지금까지 models.py를 통해 데이터 구조도 만들고, 데이터를 불러올 수도, 저장할 수도 있었다. 오늘은 조금 더 깊숙이 들어가 장고가 어떻게 데이터를 관리하고 있는 지 알아보자. QuerySet - 데이터베이스에 있는 객체들의 집합 - model의 Manager를 통해 QuerySet을 얻을 수 있다. Django Managers - 장고 models는 데이터베이스 쿼리 작업을 할 수 있는 인터페이스를 제공하는데, 이것은 Manager라고 한다. - 장고 앱의 각각의 모델에는 적어도 하나의 Manager가 존재한다. - 클래스명.objects를 통해서 Manager를 부를 수 있다. ex) Person.objects Manage..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bE0JGK/btqYebRP7cy/sGiNtJ8TI2qurtksWKnXz0/img.jpg)
Meta Class Model metadata는 모델에서 필드가 아닌 것을 가리키며 Meta class를 통해 구현된다. 필수가 아닌 옵션으로 아래 링크에서 목록을 확인할 수 있다. docs.djangoproject.com/ko/3.1/ref/models/options/ Abstract Base Class - 여러가지 모델에서 공통으로 사용되는 정보가 있을 때 유용한 클래스 - 클래스의 Meta클래스에서 'abstract=True'라고 적음으로써 정의(abstract의 default 값은 False) - 데이터베이스 테이블 생성에는 사용되지 않으나, 다른 클래스가 상속할 경우에 해당 크래스(child class)의 필드로 추가된다. - manager 를 가지지 않고, 초기화되거나 직접적으로 저장될 수 없..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWuz7H/btqYiC1DkQN/lxLjwJet3alrvqVkLN5Ff1/img.jpg)
학습 강의 nomadcoders.co/airbnb-clone/lobby Django Admin Interface 장고 앱에서 모델을 생성하면, 신뢰할 수 있는 유저(일반 유저x, 웹마스터 o, 프론트엔드용이 아니다)가 웹사이트를 모델 중심으로 관리할 수 있는 인터페이스가 자동으로 생성된다. ModelAdmin ModelAdmin 클래스는 admin 인터페이스에 있는 모델을 나타내며, 보통 admin.py 에 저장되어있다. 우선 예시 먼저 살펴보자. myapp의 models.py의 Author 클래스를 admin.py에 연결하려고 한다. 아래 두 가지 방법 중 어느 것을 사용해도 상관 없다. - 사용 코드 예시 (1) from django.contrib import admin from myproject.m..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bABDQZ/btqX82HrJ7d/AvR6PTDgKwZoFpm7gvkbQ1/img.jpg)
학습 강의 nomadcoders.co/airbnb-clone/lobby Relation Fields 장고 프로젝트는 여러 가지 앱으로 이루어진다. 앱 마다 데이터를 다루는 models.py 파일을 가지고 있는데, 하나의 models.py이 데이터를 카테고리에 따라 클래스로 분류한 다양한 데이터 모델 클래스들을 가질 수 있다. 에어비앤비 클론 코딩을 한다면, Rooms 라는 앱의 models.py 에 Room class, Facility class 등이 있는 경우를 예로 들 수 있다. 작업을 하다보면 Room 클래스의 필드(host)가 User 클래스의 필드(name)를 참조하는 것처럼 필드간의 상호작용이 생기는 경우가 있다. 이 때 활용할 수 있는 것이 ForeignKey와 ManyToManyField ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dhZkRd/btqYkapX1y1/VWmMS1fDetnKFOO2mxNLt0/img.jpg)
학습 강의 nomadcoders.co/airbnb-clone/lobby 지난 포스팅(1y9u9j2in.tistory.com/178)에서 장고의 모델은 데이터를 담당한다고 배웠다. 오늘은 모델에서 사용되는 필드 타입에 대해 배워보자. Model Field? 데이터에는 여러 가지 타입이 있다. 예를 들어 회원가입을 할 때 입력해야 하는 것들을 생각해보자. 이름은 텍스트, 나이는 숫자, 국가는 선택, 결혼 여부 등 평소에는 별 생각 없이 입력했던 정보였지만, 따지고 보면 서로 다른 타입들을 가지고 있다. 따라서 데이터를 다루는 장고 모델에서도 여러가지 타입의 데이터를 처리할 수 있도록 Model Field라는 것이 존재하는데, 데이터 베이스 테이블 중에서 열을 나타낸다. Model Field Import 필드..