본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

Django21

[Django] request.data와 request.POST는 각각 언제 사용할까? Django에서 POST 요청으로 넘어온 데이터를 받을 때, 데이터의 형태에 따라 다음 방식 중 하나를 선택하는 것이 좋다. 1. request.POST.get(key, default=None) - 일반적으로 폼 데이터를 처리할 때 사용되며, key에 해당하는 값을 가져오거나, 값이 없으면 default 값을 반환한다. - 키가 존재하지 않을 때 오류가 발생하지 않으며, 디폴트 값을 지정할 수 있어 안전한 방식이다. 2. request.POST[key] - request.POST.get과 비슷하지만, 키가 존재하지 않으면 KeyError를 발생시킨다. 키의 존재가 확실한 경우에만 사용하는 것을 권장한다. 3. request.data.get(key, default=None) - Django REST fra.. 2023. 3. 22.
[Django] Form 처리 방식 정리 1. 단순한 폼 처리 - 가장 1차원적인 방법이다. - request.GET 또는 request.POST를 이용하여 태그의 name과 일치하는 데이터를 받아올 수 있다. 예시 from django.shortcuts import render def index(request): n = request.POST['n'] a = request.POST['a'] try: n = int(n) except (ValueError): n = 0 try: a = int(a) except (ValueError): a = 0 context = { 'n':n, 'rangeA':range(a), } return render(request, 'users/index.html', context) def givevar(request): .. 2023. 2. 16.
[Django] 단축 함수 장고에서는 웹 프로그램 개발 시 공통적으로 사용하는 기능들을 개발해서 단축 함수로 제공하고 있다. 함수형 뷰를 사용하지 않고 클래스형 뷰만 사용할 것이더라도, 메소드 오버라이딩시 단축 함수를 사용하는 경우도 있기 때문에 단축 함수들은 이해하고 넘어가야 한다. 이번 포스팅에서는 장고에서 제공하는 단축 함수들을 소개할 것이다. 1. render() 템플릿을 클라이언트에게 보여주기 위해 렌더링을 한 뒤에 HttpResponse 객체를 반환한다. render(request, template_name, context=None, content_type=None, status=None, using=None) - request : 클라이언트가 보낸 요청 객체다. 내부적으로 이 객체에 담겨 있는 파라미터들을 사용해 Re.. 2023. 2. 15.
[Django] 제네릭 뷰의 페이징 기능 화면에 표시할 레코드가 많은 경우에 페이지마다 나눠서 보여줄 수 있도록 하는 기능을 페이징 또는 페이지네이션이라고 한다. 이번 포스팅에서는 제네릭 뷰에서 제공하는 페이징 기능을 알아보도록 하자. 1. 페이징 기능 활성화하기 - 페이징 기능은 MultipleObjectMixin의 paginate_by 속성을 지정함으로써 활성화 가능하다. ListView와 날짜 기반 제네릭 뷰는 MultipleObjectMixin을 상속받고 있기 때문에 페이징이 가능한 것이다. - 장고의 페이징 기능이 활성화되면 객체 리스트에는 페이지별로 구분되어 저장된다. 즉, 디폴트 context 변수인 object_list에는 특정 페이지에 해당하는 객체만 담긴다. - paginate_by 속성에는 페이지당 몇 개의 항목을 출력할지 .. 2023. 2. 15.
[Django] QuerySet에서 사용하는 '__'의 의미 1. Field Lookups - exact, contains, in, gt, lt, startswith 등과 같은 필드 룩업을 사용하겠다는 의미 예시 Blog.objects.filter(name__startswith='Beatles') 더 많은 필드 룩업들을 살펴보려면 Field Lookups에 관한 아래 공식 문서를 살펴보길 바란다. https://docs.djangoproject.com/en/4.1/ref/models/querysets/#field-lookups Django The web framework for perfectionists with deadlines. docs.djangoproject.com 2. 외래키 모델 속성 참조 - 외래키 모델의 속성을 참조할 때에도 속성명 앞에 '__'를 .. 2023. 2. 13.
[Django] 공통 context 변수 설정하기 모든 뷰, 템플릿에 적용되는 공통 context 변수는 어떻게 설정할까? 결론부터 말하자면, 딕셔너리 타입을 반환하는 메소드를 하나 만들어서 settings.py에서 TEMPLATE -> OPTIONS -> context_processors에 추가해주면 된다. 1. 딕셔너리 타입을 반환하는 메소드 작성 - 파일을 하나 만들어서 딕셔너리 타입을 반환하는 메소드를 작성한다. 반환되는 딕셔너리의 key, value는 각각 context 변수의 key, value 값으로 추가된다. {'timelist':timelist}를 리턴했다는 사실에 주목하면 된다. import time def get_timelist(self): timelist = [] now = time.localtime(time.time()) now_.. 2023. 2. 11.
[Django] 날짜형 클래스형 뷰에서 404 에러가 발생하는 경우 다른 뷰들은 잘 동작하는데 ArchiveIndexView와 같은 날짜형 클래스형 뷰에서만 404 에러가 발생하는 경우가 있다. 원인은 다음과 같다. BaseDateListView를 상속받는 날짜형 클래스형 뷰들은 allow_empty 속성이 False로 되어있기 때문이다. allow_empty는 레코드가 하나도 없는 경우를 허용하는지의 여부를 뜻한다. 즉, 여러분들은 날짜형 클래스형 뷰에서 allow_empty를 True로 재정의해주면 된다. class SnackAV(ArchiveIndexView): allow_empty=True ... 참고로, django/views/generic/dates.py에 관련 코드가 적혀있다. 2023. 2. 11.
[Django] 가상 환경에서 Django 사용하기 1. 파이썬의 가상 환경 가상 환경은 독립된 공간을 만들어주는 기능으로, 라이브러리 간의 버전 문제로 인한 충돌을 막기 위해 사용된다. 파이썬에서는 프로젝트별로 독립된 가상 환경을 만들어주는 virtualenv 툴과 venv 모듈을 제공한다. virtualenv와 venv는 기능으로써는 큰 차이가 없고, venv는 virtualenv와 달리 파이썬 3.3부터 표준 라이브러리로 포함되어 있어 별도의 설치 과정이 필요가 없다는 차이 정도가 있다. 이번 포스팅에서는 venv 모듈을 사용해서 가상 환경을 만들어보고, Django를 사용할 환경까지 구성해볼 것이다. 2. 가상 환경 생성 git bash에서 명령어를 통해 가상 환경을 구축해보자. 1) 가상 환경을 모아둘 디렉토리로 이동 2) 가상 환경 생성 pyt.. 2023. 2. 1.
[Django] wsgi.py의 역할 및 배포 설정 사항 운영 환경에서는 웹 서버가 클라이언트 요청을 수신하고, 웹 애플리케이션 서버를 통해서 장고의 애플리케이션을 호출하는 식으로 동작한다. 참고로, WSGI 규격을 지킨 웹 애플리케이션 서버를 WSGI 서버라고 부르기도 한다. 이번 포스팅에서는 웹 서버와 장고를 연결해주는 wsgi.py에 대해 알아본 뒤에, 배포 전에 해둬야 할 설정 사항들을 알아볼 것이다. 1. wsgi.py import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') application = get_wsgi_application() - 장고와 웹 서버를 연결하는 데 필요한 파.. 2023. 1. 26.