티스토리 뷰

반응형

 ModelCls.objects

 

- Default Manager로서 ModelCls.objects가 제공된다.

 

- 일반적으로 order_by를 해주는 것이 좋다.

 

  • ModelCls.objects.all()
  • ModelCls.objects.all().order_by('-id')[:10]  => SELECT * FROM app_model ORDER BY id DESC LIMIT 10;
  • ModelCls.objects.create(title="New Ariticle") => INSERT INTO app_model (title) VALUES ("New Ariticle");

 

 

 

 

 

 filter vs exclude

 

- parameter로 "필드명 = 조건값"을 지정한다.

 

=> Item.objects.filter(name="New Item", price =3000) (SQL에서 WHERE)

=> Item.objects.exclude(name="New Item", price=3000) (SQL에서 WHERE NOT)

 

- 1개 이상의 parameter를 지정하면 모두 AND 조건으로 묶인다.

 

- OR 조건을 묶으려면, django.db.models.Q를 활용한다.

 

=> from django.db.models import Q

     Item.objects.filter(Q(name="New Item") & Q(price=3000))

    Item.objects.filter(Q(name="New Item") | Q(price=3000))

 

 

 

 

 

 requirements.txt

 

- requirements.txt를 통해 여러 라이브러리를 한번에 설치 가능하다.

 

=> pip install -r requirments.txt

 

 

 

 

 

 

 MEDIA_ROOT

 

- os.path.join(BASE_DIR.. 에서 BASE_DIR은 프로젝트 settings에서 기본으로 설정되어있는 디렉토리이다.

 

- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

 

  • __file__ : python 파일이 import 될 때의 경로를 담고있다. 위의 경우는 settings.py가 된다.
  • abspath : 경로를 절대경로로 바꿔준다.
  • dirname : 상위 폴더를 의미한다.

   즉, BASE_DIR은 settings.py의 상위폴더(프로젝트 내에서 프로젝트 이름과 같은 폴더)의 상위폴더(manage.py가 존재하는 프로젝트 최상위 폴더)를 의미한다.

 

 

 

 

 

 

 os.path.join(BASE_DIR, 'media')

 

- BASE_DIR(프로젝트 root 디렉토리) 아래에 'media'란 폴더에 저장하겠다는 의미

 

- os.path.join(BASE_DIR, '..', 'public', 'media')

=> 프로젝트 디렉토리에서 한단계 더 나가서 'public' 폴더 아래에 'media' 폴더에 저장하겠다.

 

 

 

 

 

 

 project/urls.py에서 settings를 import하기

 

- urls.py에서 settings를 import할 때 from (프로젝트이름) import settings 할 수 있지만 이렇게 하면 안된다.

 

- 우리가 사용해야할 settings는 django에서 기본 제공하는 from django.conf import global_settings와 내가 만든 프로젝트의 settings를 합친 것이다.

 

- from django.conf import settings를 써주면 django가 위의 두가지를 합쳐준다.

 

- os.path.join(BASE_DIR, '..', 'public', 'media')

=> 프로젝트 디렉토리에서 한단계 더 나가서 'public' 폴더 아래에 'media' 폴더에 저장하겠다.

 

 

 

 

 

 

 MEDIA_URL 

 

- 파일에 의한 MEDIA 접근시에 사용되는 url이다.

 

(ex) MEDIA_URL = '/media/'

- localhost:8000/media/요청하는파일명

 

 

 

 

 

 

 static function in project urls.py

 

- from django.conf.urls.static import static 로 불러온다.

 

- urls.py로 들어온 media 요청을 처리하기위해 urlpatterns에 추가해준다.

 

=> urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)(url 리스트를 준다)

 

 

 

 

 

반응형
댓글