django

·2022년 11월 23일
0

TIL

목록 보기
40/46

장고의 ORM은 쿼리문을 몰라도 데이터 작업이 가능하다

쿼리문이란 데이터베이스의 테이블을 생성, 수정, 삭제 또는 테이블 데이터의 내용을 생성, 수정, 삭제 시 사용하는 데이터베이스 문법이다. 데이터를 다루기 위해서는 쿼리문을 활용하는 것이 일반적이지만, 장고의 QRM(object relational mapping)은 파이썬으로 데이터 작업을 할 수 있게 해주기 때문에 파이썬만으로 데이터를 다룰 수 있다

sqlmigrate

makemigrations로 데이터베이스 작업 파일을 생성하고 migrate 명령을 실행하기 전에 실제 어떤 쿼리문이 실행되는지 sqlmigrate 명령으로 확인해 볼수 있다. sqlmigrate 명령은 단지 실행되는 쿼리만 조회할 뿐이다. 실제 쿼리가 수행되지는 않는다

id값

데이터가 1건 생성되면 반드시 id 값이 생성된다. id는 데이터의 유일한 값이며 프라이머리 키(PK:primary key)라고 부르기도 한다. id값은 데이터를 생성할 때마다 1씩 증가한 값으로 자동으로 입력된다

장고는 앱 하위에 있는 templates 디렉터리를 자동으로 템플릿 디렉터리로 인식한다

장고는 DIRS에 설정한 디렉터리 외에도 특정 앱 디렉터리 하위에 있는 templates라는 이름의 디렉터리를 자동으로 템플릿 디렉터리로 인식한다. 예를들어 practice라는 명의 앱 디렉터리 밑의 templates 디렉터리는 별다른 설정을 하지 않아도 템플릿 디렉터리로 인식된다

템플릿 태그

  1. 분기
{% if 조건문1 %}
    <p>조건문1에 해당되는 경우</p>
{% elif 조건문2 %}
    <p>조건문2에 해당되는 경우</p>
{% else %}
    <p>조건문1, 2에 모두 해당되지 않는 경우</p>
{% endif %}
  1. 반복
{% for item in list %}
    <p>순서: {{ forloop.counter }} </p>
    <p>{{ item }}</p>
{% endfor %}

  1. 객체 출력
{{ 객체 }}
{{ 객체.속성 }}

오류 메시지

200 성공 (OK)
500 서버오류 (Internal Server Error )
404 서버가 요청한 페이지(Resource)를 찾을 수 없음 (Not Found)

CSRF

CSRF(cross site request forgery)는 웹 사이트 취약점 공격을 방지를 위해 사용하는 기술이다. 장고가 CSRF 토큰 값을 세션을 통해 발행하고 웹 페이지에서는 폼 전송시에 해당 토큰을 함께 전송하여 실제 웹 페이지에서 작성된 데이터가 전달되는지를 검증한다

csrf_token 사용을 위해서는 CsrfViewMiddleware 미들웨어가 필요한데 이 미들웨어는 settings.py의 MIDDLEWARE 항목에 디폴트로 추가되어 있으므로 별도의 설정은 필요 없다

django.contrib.auth 기능

django.contrib.auth 기능은 뷰함수에서 템플릿에 객체를 전달하지 않아도 템플릿에서 일부 기능을 사용할 수 있다

  • user.is_authenticated - 현재 사용자가 인증되었는지 여부 (로그인한 상태라면 true, 로그아웃 상태라면 false)
  • user.is_anonymous - is_authenticated의 반대 경우 (로그인한 상태라면 false, 로그아웃 상태라면 true)
  • user.username - 사용자명 (사용자 ID)
  • user.is_superuser - 사용자가 슈퍼유저인지 여부

author 속성에 null 허용

author 속성에 null을 허용하려면 다음처럼 null=True 속성을 추가하면 된다

author = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

null=True 속성을 부여하면 migrate시 데이터베이스에 null 허용 컬럼으로 생성된다

0개의 댓글