장점
1. SQL을 잘 알지 못해도 DB조작이 가능하다.
2. SQL을 알아도 기존의 복잡한 쿼리문 작성없이 객체 지향적인 접근이 가능하다.
3. SQL을 잘 사용하지 못한다면 ORM이 변환해주는 것이 더 빠르다.
4. 생산성의 향상
단점
1. ORM에서 지원하지 않는 (복잡한) 쿼리라면 직접 작성해야 한다.
2. 서비스가 커질 수록 ORM만으로는 한계가 있을 수 있다.
3. 매우 효율적인 SQL을 작성하고 싶다면 불편할 수 있다.
Django ORM으로 Database API을 사용해서 데이터베이스를 조작하는 것이다.
모델 클래스를 생성하면 Django는 자동으로 CRUD 할 수 있는 Database API를 제공한다.
작성한 모델 클래스를 이용하여 데이터베이스 쿼리 작업을 도와주는 역할을 한다.
Queryset == ORM을 사용해서 데이터베이스로부터 전달박은 객체
매니저의 기본(default) 이름은 objects 이다.
MyModel.objects.all()
GET
POST
유저가 서버에 요청을 보낼 때 함께 제공되는 특별한 토큰 값으로, 이 토큰은 사용자의 세션과 연결되어 있다. 요청이 전송될 때, 함께 제출되며 서버는 요청을 받을 때 이 토큰을 검증하여 요청이 유효한지 확인하는 방식으로 CSRF을 방지한다.
<form action="{%url 'create'%}" method="POST">
{% csrf_tocken %}
</form>
Django에는 쉽게 CSRF Token 방식을 구현할 수 있게 template tag로 제공한다.
Header
BODY
GET은 데이터를 url에 담아보내고, POST는 BODY에 담아 보낸다.
GET은 데이터 전송에 한계가 있으나, POST는 그렇지 않다.
POST방식으로 데이터를 전송할 때는 CSRF Token이 필요하다.