TIL - 37 django 용어정리 1.

이동근·2021년 1월 28일
0

django

목록 보기
3/12

django 용어 정리

admin : 관리자용 사이트로 접근할 수 있도록 하는 것
auth: 시스템 인증과 권한부여를 모두처리합니다. 사용자가 누구인지를 판별하고 권한 부여는 인증된 사용자가 어떤 일을 할 수 있을지 결정합니다. 여기에 인증이라는 개념이 두 작업에 모두 쓰이게 됩니다.
contentypes : 컨텐츠 타입을 위한 프레임 워크
sessions : 세션 프레임 워크
staticfiles : 정적파일을 위한 프레임워크

models 필드 정리

필드타입

1. Primary Key(auto field, Big auto field)

  • auto field: IntengerField 사용 가능한 ID에 따라 자동으로 증가 하는 필드 입니다. 굳이 사용할 필요는 없다.

2. 문자열(CharField, TextField, SlugField)

  • charfield(max_length=숫자, 옵션) : 작은크기에서 큰 크기의 문자열을 위한 문자열 필드 입니다.
  • TextField(**옵션) - 큰 텍스트 필드, 이 필드의 기본양식 위젯은 Textarea
  • slugFiedl(max_length=숫자, 옵션) : 슬러그는 문자, 숫자, 밑줄 또는 하이픈 만 포함하는 항목에 대한 짧은 레이블 입니다. 일반적으로 URL에서 사용됩니다.

3. 날짜/시간(DateField, TimeField, Duration Field)

  • DateTimeField(auto_now=False, auto_now_add=False, **옵션) 파이썬에서 datetime.datetime 인스턴스로 표시되는 날짜 및 시간 입니다.
    • auto_now = True : django model이 save 될 때마다 현재날짜(date.today())로 갱신됩니다.
    • auto_now_add = True : django model이 최초저장(insert) 시에만 현재날짜 (data.today())를 저장 합니다. 모델 객체 생성 후 저장(save)를 하게되면 null로 저장됩니다.
  • Durationfield(**옵션) : 기간을 저장하기위한 필드

4. 참/ 거짓(BooleanField, NullBooleanField)

  • booleanField(옵션) : 참/거짓 필드 이 필드에 위젯의 기본형태는

5. 숫자(IntegerField, SmallintgerField, Posrivelntenerfield, PostiveSmallintegerField, BigIntegerField, DecimallField, FloatField)

  • IntegerField : django가 지원하는 정수형 값
  • smallIntegerField: 유사 Integer Field 특정 지점 아래값만 허용
  • PositiveintegerField: IntegerField와 같지만 양수 또는 0 이어야 합니다.
  • PositivebigintegerField : 유사 필드 이지만 더 넓은 범위를 지원합니다.
  • DecimalField(max_digit=숫자, decimal_place='숫자') : python에서 decimal 인스턴스로 표시되는 고정 정밀도 십진수 입니다.
  • floatfield : 파이썬에서 float인스턴스로 표시되는 부동 소수점 숫자 입니다.
    (decimalfield와 float 필드의 차이점: 내장된 float 유형은 기능의 적당한 부분문 노출하지만 decimal 모듈은 표준의 모든 필수 부분을 노출합니다.)

6. 파일(BinaryField, FileField, ImageField, FilePathField)

  • BinaryField : binary데이터를 저장하는 필드입니다

바이너리 데이터 : 모든 데이터, binary data입니다. 그럼 텍스트와 바이너리 데이터의 차이점은? 일단 파일 확장자가 txt인 파일을 텍스트파일이라고 부른다. 그리고 바이너리 파일의 확장자는 exe이다.
즉 텍스트형 파일은 문서파일을 우리가 아무 연산없이 사용하기 편하게 하기 위해 쓰는 파일
바이너리파일은 컴퓨터가 편리하게 사용하기 위해 사용하는 파일
각 파일들은 사용될 곳에 따라 그에 맞는 형식을 저장!!!!!

7. 기타(EmailField, URLField,UUIDField, GenericlAddressField)

  • UUIDField : 보편 적으로 고유한 식별자를 저장하기 위한 필드
  • GenericlAddressField(protocal='both',unpack_IPv4=False, **option) : 문자열 형식의 IPV4 또는 IPV6의 주소, 이 기본 양식은 TextInput
    • protocal : 유요한 입력을 지정된 프로트콜롤 제한합니다. 허용된 값은 both, Ipv4, IPv6 입니다. 일치는 대소문자 구분 x
    • unpack_IPv4 : 같은 IPv4 매핑 주소의 압축을 풉니다. 가로 프로토콜이 설정된 경우에만 사용할 수 있습니다.
    • both 공백값을 허용하는 경우 공백 값이 널로 저장되므로 널 값을 허용해야 합니다.

필드 옵션(Field option)

1. blank: validation시에 empty 가능(기본값 False), 허가된 부분에 있어서 공백 인정
2. Null: null 허용여부(False)
3. db_index: 인덱스필드여부(false)
4. default: 디폴트값 지정, 혹은 리턴해줄 함수 지정
5. unique: 현재 테이블 내 유일성 여부(False)
6. choices: select 박스 사용시 사용
7. verbose_name: 필드 레이블 미 지정시 사용
8. help_text: 필드 입력 도움말
9. Django 모델 외래키 필드

  • CASCADE : ForeignKeyField 가 바라보는 값이 삭제 될 때 ForeignKey를 포함하는 모델 인스턴스(row)도 삭제 된다.
  • Protect : ForeighKeyField가 바라 보는 값이 삭제 될 때 삭제가 되지 않도록 ProtectedError을 발생합니다.
  • SET_NULL : ForeignKeyField가 바라보는 값이 삭제 될 때 ForeignkeyField 값을 null로 바꾼다.(null = True) 일때만 바꾼다.
  • SET_DEFAULT : ForeignKeyField가 바라보는 값이 삭제 될때 ForeignKeyField 값을 기본값으로 바꾼다.(단, 기본값이 있을때 가능)```
from django import models

class TestModel(Models.Model):
	pass
    
DEFAUL_TEST_MODEL_PK = 1

class FKModel(models.model):
	test = models.ForeignKey(TestModel, on_delete=models.SET_DEFAULT, default=DEFULT_TEST_MODEL_PK)
  • SET() : ForeginKeyField()가 바라보는 값이 삭제 될때 ForeighKeyField 값을 SET에 내장함수로 설정 된다.
from django.db import models

class TestModel(model.Model):
	pass
class FKModel(model.Model):
	test = models.ForeignKeyField(TestModel, on_delete=modelsDo_NoTHING)
  • DO_NOTHING : ForeignKeyField가 바라보는 값이 삭제 될때 행동을 취하지 않는다.(참조 무결성을 해칠 수 있다.)

Django모델 ORM이란?

객체지향 언어를 사용하는 컴퓨터 프로그램이 호환이 되지 않는 타입의 시스템 사이끼리 데이터를 컨버트 할때 사용하는 컴퓨터 기술이다.

MetaClass(메타 클래스)

메타클래스는 클래스를 만드는 무언가 입니다. 즉 Meta class는 그저 클래스 객체를 만드는 무언가 라고 할 수 있습니다. --metaclass-- 속성을 직접 추가할수 있습니다. 메타 클래스는 상속받지 않는다.

  • 메타클래스의 주목적은 클래스가 만들어질 때 클래스를 자동으로 바꾸기 위한 것 입니다. 보통 현재 text와 알맞는 클래스를 만들기 위해 API와 같은 곳에 커스템 메타 클래스를 사용합니다.

corsheaders

Django App에서 CORS(Cross-Origin Resource Sharing) 메커니즘을 적용하기 위해 Response Header에 CORS Header를 추가해 JSON-P는 유용하지만 GET 요청에 엄격히 제한되기 때문에 XMLHTTrequest를 기반으로 동일한 도메인 요청과 마찬가지로 서로 다른 도메인 간 요청을 할 수 있음
CORS에러는 나의 도메인이 다른 도메인이 데이터를 요청 하지 않아 생기는 오류

JSONP - CORS가 활성화 되기 이전의 데이터 요청 방법으로, 다른 도메인으로부터 데이터를 가져오기 위해 사용하는 방법, 자바스크립트는 서로 다른 도메인에 대한 요청을 보안상 제한 하는데, 이 정책으로 생기는 이슈를 우회해서 데이터 공유를 가능하게 하였습니다. JSONP는 여러 보안상 이슈로 인하여 W3C(월드 와이드 웹을 표준 개발하고 장려하는 단체)에서는 2009년 채택된 CORS 방식의 HTTP 통신을 권장하고 있습니다.

CORS_ORIGIN_ALLOW_ALL - 모든 사이트들간 HTTP요청을 가능하게 하며 보통 개발 환경에서 True로 설정함
CORS_ALLOW_CREDENTIALS - True면 쿠키가 사이트간 HTTP요청에 포함되도록 허용, 기본값False

APPEND_SLASH

자동으로 URL 끝에 슬래시를 붙여주는 django의 옵션입니다. 하지만 아무때나 붙이는 것이 아니라 브라우저에서 요청한 URL이 urls.py파일 안에 정의된 패턴과 일치하는 것이 없을 때만 자동으로 붙여서 다시 한번 일치하는 것이 있나 검사를 합니다. 이때 슬래시를 붙혔음에도 일치하는 것이 없으면 404에러가 발생합니다.

httpie

ApI, HTTP 서버 및 웹 서비스와의 간편한 디버깅 및 상호 작용을 위해 설계되었다.
기본제공JSON, 색상 및 형식이 지정된 터미널 출력, 합리적인 기본값, 영구 세션, 양식 및 파일 업로드 등등을 지원한다.

profile
하루하루 1cm 자라는 개발자

1개의 댓글

comment-user-thumbnail
2021년 1월 31일

퍼가요~ ^^

답글 달기