목록장고 (Django) (43)
터칭 데이터
필터의 인자에 넣을 수 있는 조건문들은 여러개가 있습니다. https://docs.djangoproject.com/en/4.2/ref/models/querysets/#field-lookups Django The web framework for perfectionists with deadlines. docs.djangoproject.com 우리가 프로그래밍에 익숙하다면 크게 어렵지 않은 조건문들인데요. 다만 정규표현식(regex)는 다소 생소할 수도 있으나 매우 강력하고 유용한 기능이니 파이썬에서 정규표현식 DOCS를 자주 읽고 실습하기를 권장합니다. 장고의 filter()에서의 정규표현식과 파이썬에서의 정규표현식은 같습니다. https://docs.python.org/ko/3/howto/regex.htm..
모델 필터링(Model Filtering)이란 모든 데이터를 일괄적으로 가져온 뒤 내가 필요한 데이터를 찾으면 시간도 오래 걸리고 불편하겠죠 장고 모델에서는 내가 정한 조건에 부합하는 데이터만 가져오도록 하는 방법들을 제공합니다. 이를 모델 필터링이라고 합니다. get 방식 >>> from polls.models import * >>> Question.objects.get(id=1) >>> Question.objects.get(question_text__startswith='휴가를') >>> q = Question.objects.get(question_text__startswith='휴가를') >>> q.pub_date datetime.datetime(2023, 10, 31, 14, 19, 40, tzi..
쉘에서 데이터 수정하기 >>> from polls.models import * >>> q = Question.objects.last() >>> q >>> q.question_text 'abc' >>> q.question_text = q.question_text + '???' >>> q.question_text 'abc???' >>> q.save() 쉘에서 데이터 삭제하기 >>> choice = Choice.objects.last() >>> choice >>> choice.question.choice_set.all() >>> q = choice.question >>> q >>> q.choice_set.all() >>> choice.delete() # 분명 delete로 (1, {'polls.Choice':..

쉘에서 데이터 입력하기 지금까지는 어드민 페이지에서 데이터를 입력했었는데요. 이번에는 장고 쉘에서 데이터를 입력해 보겠습니다. >>> q1 = Question(question_text = "커피 vs 녹차") >>> q1.question_text '커피 vs 녹차' >>> q2 = Question.objects.all()[0] >>> q2.question_text '휴가를 어디서 보내고 싶으세요?' >>> q2 = Question.objects.first() >>> q2.question_text '휴가를 어디서 보내고 싶으세요?' q1 변수에 Question 모델에 "커피 vs 녹차"라는 질문을 새로 만든다고 했습니다. q1.question_text로 필드명으로 접근해 데이터도 조회가 됩니다. q2 변수..
파이썬에서 현재 시간 구하기 >>> from datetime import datetime >>> datetime.now() datetime.datetime(2023, 11, 1, 12, 46, 17, 150239) 장고에서 현재 시간 구하기 >>> from django.utils import timezone >>> timezone.now() datetime.datetime(2023, 11, 1, 3, 46, 45, 454383, tzinfo=datetime.timezone.utc) 장고는 웹 프레임워크이고 보통의 웹은 전 지구상에서 글로벌하게 사용되기 때문에 시차를 감안해 시간을 계산할 수 있도록 timezone까지 알 수 있도록 라이브러리를 제공합니다. django.utils에서 timezone를 im..

장고 쉘 파이썬 쉘과 마찬가지로 장고를 터미널 환경에서 다룰 수 있도록 해줍니다. 터미널에서 (당연히 가상환경(DjangoProjects)를 실행하고 프로젝트(mysite)까지 경로 설정이 되어있어야 합니다.) python manage.py shell 장고 쉘을 시작하는 명령어 입니다. Python 3.10.9 | packaged by Anaconda, Inc. | (main, Mar 1 2023, 18:18:15) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> 위와 같이 뜨면 장고 쉘을 성공적으로 켠 것입니다. 장..

어드민(Admin) 페이지로 모델도 관리할 수 있다. 바로 지난 시간에는 어드민 페이지로 이용자를 만들고 관리했습니다. 사실 어드민 페이지는 이용자뿐만 아니라 우리가 장고로 만든 모델(테이블)들을 CRUD할 수 있습니다. 이를 어떻게 할 수 있을까요? 장고의 admin에 지난 시간 만든 모델들 Question과 Choice도 다룰 수 있게 적기만하면 됩니다. 어드민 페이지에 모델 등록하기 우리가 등록할 모델 Question과 Choice는 polls앱에 존재합니다. polls 디렉토리에는 polls 앱 생성시 같이 자동생성 되었던 admin.py파일이 존재합니다. 이 admin.py 파일에 위와 같이 박스의 코드들을 적어줍니다. from django.contrib import admin from .mod..

장고에는 어드민(Admin)페이지가 존재한다. 어드민 페이지란? 데이터를 관리하는 관리자들이 편리하게 데이터를 추가하고 수정할 수 있도록 제공되는 페이지를 말합니다. 우리가 저번 시간에 만든 모델들을 기반으로 데이터를 CRUD할 수 있도록 해줍니다. CRUD: Create(생성), Read(읽기), Update(수정), Delete(삭제) 어드민 사용자(관리자) 생성 먼저 어드민에 접속할 수 있는 사용자를 만들어 봅시다. 여기 그리고 기타 사이트에서는 사용자라고 지칭되지만 시스템을 관리하는 관리자임을 늘 명심하자 (당연히 일반 웹 페이지 사용자에게 제공하면 안된다!) 먼저 터미널에서 python manage.py createsuperuser 위와 같이 superuser를 만들어줍니다. (DjangoPro..

모델 수정하기 테이블에 여러 형태의 데이터를 담을 수 있는 것 처럼 장고의 모델에도 여러 필드 타입이 제공됩니다. 우리가 만든 모델에 Boolean과 Float 필드를 추가해보겠습니다. from django.db import models # Create your models here. class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') is_something = models.BooleanField(default=False) average_score = models.FloatField(default=0.0) class Choice..

장고에서 모델이 뭐죠? 웹 페이지는 데이터 베이스(DB)에 저장된 데이터를 가져와 표현됩니다. 장고에서는 DB를 쉽고 빠르게 사용할 수 있는 모델이라는 기능을 제공합니다. 모델은 DB를 테이블별로 읽어서 테이블들마다 저장된 데이터들을 코드에서 읽을 수 있도록 도와주는 기능입니다. 이런 기능을 ORM이라고도 부릅니다. 첫번째 모델을 만들고 테이블도 만들어 실습을 진행해봅시다. 우리의 계획은 다음과 같습니다. 모델을 생성한다. 모델을 테이블에 적용해 사용하기 위해 마이그레이션을 만든다. 이렇게 생성하고 마이그레이션을 거친 모델을 이용해 테이블을 만든다. 마이그레이션 등 생소한 개념이 있지만 이제 학습을 진행하며 알아가도록 하겠습니다. 어떤 테이블을 만들까요? 여름 휴가에 대해 설문조사를 할 수 있는 테이블을..