본문 바로가기

server-side/Django19

Model.objects.filter() vs Model.objects.get() Model.objects.get()과 Model.objects.filter() 모두 장고와 연결된 데이터베이스에서 조건에 맞는 데이터를 리턴하고 싶을 때 사용한다. 그러나 두 메소드는 엄연한 차이가 있다. ✅쿼리셋(QuerySet) 둘의 차이를 이해하기 위해서는 쿼리셋이 무엇인지를 먼저 알아봐야 한다. 쿼리셋(Queryset)이란 장고와 연결된 데이터베이스에 저장된 객체들의 모임을 의미한다. 쿼리셋은 SQL문으로 치면 SELECT문과 같다. 여기에 WHERE, LIMIT 등의 여러 필터를 사용해서 원하는 데이터만 포함한 쿼리셋을 만들 수 있다. + 앞으로 '쿼리를 날린다'는 표현을 사용할 건데, '쿼리를 날린다' = '데이터베이스에 연결한다' 라고 보면 된다. ✅쿼리셋과 데이터베이스 접근은 다르다. (Q.. 2022. 7. 11.
models: on_delete ✅models.ForeignKey(on_delete={}) models.ForeignKey(참조할 모델, on_delete={참조하는 인스턴스가 삭제될 시 해당 인스턴스를 처리하는 방법}) on_delete 옵션은 해당 인스턴스가 참조하는 인스턴스가 삭제되었을 시, 해당 인스턴스를 어떻게 처리할지를 지정한다. 1) models.CASCADE 해당 인스턴스가 참조하는 인스턴스가 삭제된 경우, 해당 인스턴스도 같이 삭제한다. 2) models.PROTECT 해당 인스턴스가 참조하는 인스턴스를 삭제하려고 할 때 ProtectedError를 발생시킨다. 3) models.RESTRICT 해당 인스턴스가 참조하는 인스턴스를 삭제하려고 할 때 RestrictedError를 발생시킨다. 두 옵션 모두 에러를 발생시키.. 2022. 7. 5.
admin: Inline, InlineModelAdmin ✅Inline 모델 A가 모델 B를 ForeignKey로 가질 때, 모델 A는 모델 B에 의존한다. 모델 A의 각 데이터마다 해당하는 모델 B의 데이터를 보고 싶을 때, inline을 사용한다. # models.py class Home(models.Model): id = models.IntegerField() address = models.CharField() class Person(models.Model): id = models.IntegerField() name = models.CharField() home = models.ForeignKey(Home, on_delete=models.CASCADE) # admin.py class PersonInline(admin.StackedInline): model.. 2022. 7. 2.
conda 사용해서 가상환경 만들기 가상환경을 설치하는 방법은 anaconda, pip 등 여러 가지가 있다. 오늘은 anaconda와 pip을 둘 다 사용해서 가상환경을 만들어 보자. pip는 저번에 구체적으로 다루었으니, 이번에는 conda를 사용해서 가상환경을 만든 뒤 그 안에서 pip를 사용해 볼 것이다. anaconda와 pip은 모두 파이썬을 사용하는 가상환경을 만들어 준다는 점에서 동일하지만, anaconda에서 사용 가능한 라이브러리와 pip에서 사용 가능한 라이브러리가 다르다. (물론 numpy처럼 둘 다에서 사용 가능한 라이브러리도 있다.) ✅anaconda와 pip의 차이 anaconda와 pip이 어떻게 다른지를 알아보기 위해서 각 시스템의 특징을 보자. pip는 파이썬 환경에서만 사용할 수 있는 패키지가 포함된다. .. 2022. 6. 29.
#3. 관리자 페이지 커스터마이징 - ModelAdmin 기능 일부 관리자 페이지에서는 사용자가 정의한 모델에 대한 기본적인 CRUD 기능을 제공한다. 그러나 때로는 사용자가 직접 원하는 기능을 추가하고 싶을 수 있다. 이를 위해서 장고에서는 어드민(관리자) 페이지 커스터마이징 기능도 제공한다. 관리자 페이지 커스터마이징 작업은 admin.py 파일에서 이루어진다. 우선 각 모델에 해당하는 모델 관리자 클래스를 만들어 놓자. 대략적으로 admin.py 에서 정의한 모델 클래스는 추가적인 옵션 class ObjectAdmin(매개변수, 여러 개가 들어갈 수도 있다): 필드들(optional) 함수들(optional) 이렇게 구성된다. admin.ModelAdmin 장고 어드민 인터페이스의 구현체라고 한다. 정확히 무슨 말인지는 모르겠다! [이해하면 포스팅하기] regist.. 2022. 6. 28.
#2. Django 관리자 페이지 접근하기 대부분의 웹 서비스에는 관리자 페이지가 있다. 관리자 페이지에서는 가입한 회원과 관련된 데이터들을 조회할 수 있다. 이를 통해 회사는 서비스가 어떻게 운영되고 있는지도 판단할 수 있기 때문에, 대부분의 웹 서비스에는 관리자 페이지가 있다. 장고(django)에서도 관리자 페이지 기능을 제공한다. python manage.py runserver 명령어로 서버를 띄우면 기본 주소인 http://127.0.0.1:8000(포트번호) url로 로컬 서버에 접속할 수 있다. 관리자 페이지를 보려면 http://127.0.0.1:8000/admin url로 접속하면 된다. 그러면 관리자 페이지를 보기 위해서 관리자 아이디와 비밀번호를 입력하라는 창이 뜬다. ✅관리자 계정 생성하는 방법 관리자는 보통 다른 사용자(유.. 2022. 6. 26.