전체 글 373

장고(Django) 상세(detail) 페이지로의 링크 추가하기

우리의 상세(detail)페이지 제작 단계는 크게 2가지였습니다. 1. URL에 Quetions ID를 입력시 해당 Question의 상세 페이지로 접속하도록 구현하기 2. question 제목들이 나열되어 있을 때 특정 제목을 클릭하면 해당 question의 상세페이지로 가는 링크 만들기 우리는 바로 이전 시간 1단계 구현을 마쳤습니다. 이번에는 2단계를 구현할 것입니다. 제목 클릭시 상세 페이지로 이동하는 링크 추가 제목을 클릭시 해당 제목의 상세 페이지로 이동했습니다. 태그를 이용 뷰(polls/views.py)에서 context로 건네 받은 questions의 쿼리셋 요소들인 question에 반복문으로 하나씩 접근하면서 해당 question의 제목을 보여주는데 그 제목에 a 태그로 링크를 걸어 ..

장고 (Django) 2023.11.03

장고(Django) 템플릿에서 상세(detail) 페이지 만들기

만들 상세 페이지의 예시 프로그래머스 질문 페이지와 같이 제목들을 클릭하면 첫번째, 상세 내용이 나오도록 두번째, ID 번호를 URL에 입력시 그 ID에 해당하는 question의 상세 내용을 볼 수 있도록 하고자 합니다. URL에 입력되는 ID번호에 따라 다른 페이지 보여주기 URL에 관한 업무이니 먼저 polls/urls.py를 손봅니다. 'polls/' 뒤에 숫자(ID)가 들어온다면 뷰(views)의 디테일(detail) 메서드에서 처리한다는 path를 urlpatterns에 추가합니다. 그런데 여기서 를 잘 기억해주세요. 뷰의 detail 메서드에서는 urls.py에서 넘겨준 question_id를 인자(파라미터)로 받아 HttpResponse로 출력하도록 합니다. 이제 브라우저에서 실행결과를 살..

장고 (Django) 2023.11.03

장고(Django) 템플릿에서 제어문 사용하기

템플릿에 for (제어)문으로 여러 데이터 출력하기 지난 시간 우리는 Question 모델에 있는 여러개의 질문들 중에서 가장 최근 질문 하나만 가져와서 index.html에서 출력했습니다. 그런데 템플릿에 여러개의 데이터를 출력하려면 어떻게 해야할까요? 먼저 장고 쉘(Django Shell)에서 살펴보겠습니다. >>> from polls.models import * >>> latest_question_list = Question.objects.order_by('-pub_date')[:5] >>> latest_question_list >>> for question in latest_question_list: ... print(question.question_text) ... new question 휴가를..

장고 (Django) 2023.11.02

장고(Django) 뷰(Views)

뷰(Views) 지금까지 우리는 모델을 이용해 데이터 베이스를 객체화해 다루고 이를 장고 쉘(Shell)에서만 다뤄봤는데요. 장고 뷰는 모델로 읽어온 데이터를 활용해 보여주는 곳입니다. 헷갈리거나 잊지 않기위해 우리는 지금 DjangoProjects 가상환경의 mysite 프로젝트의 polls 앱을 다루고 있습니다. views.py로 모델의 데이터들 보여주기 http://127.0.0.1:8000/polls/index 라는 URL을 입력하면 브라우저에서 Question 목록이 뜨도록 하려고 합니다. 그 전에 지난 시간 우리가 장고 서버에서 URL 경로를 어떻게 지정했는지 복습겸 다시 살펴보겠습니다. mysite/urls.py입니다. mysite 프로젝트 전체를 관장하는 mysite 디렉토리의 urls.p..

장고 (Django) 2023.11.02

왜 장고는 View 메서드에서 request를 파라미터로 가질까?

한줄 요약: 필요해서.. https://stackoverflow.com/questions/46383210/why-view-functions-require-a-request-parameter-in-django Why view functions require a request parameter In Django? Example from Django documentation: def index(request): return HttpResponse('hellworld!') def detail(request, question_id): return HttpResponse("Question: %s" % questi... stackoverflow.com 좋은 내용이라 정독할 것을 권장하지만 바쁜 사람들을 위해 최대한 ..

장고 (Django) 2023.11.02

장고(Django) 모델 메소드

모델 메서드 우리가 지금까지 쉘에서 사용했던 save()는 모델 메서드입니다. 쉘에서 메모리상으로 남아있던 작업을 DB 테이블에 적용하는 메서드였는데요. 우리가 save() 메서드를 사용할 수 있었던 것은 우리가 models.py에서 모델 클래스를 정의할 때 model 라이브러리의 Model을 상속받았기 때문입니다. 우리는 지금까지 이 Model에 있는 save() 메서드를 사용했던 것입니다. 모델 메서드 직접 만들기 장고에서는 우리가 사용할 모델 메서드들을 직접 손수 정의해서 사용할 수 있습니다. Question에 대해서 최근에 생성된 question인지 알아보는 메서드를 구현해 보겠습니다. 24시간 내에 만들어진 최근 question인지를 판단해주는 메서드 was_published_recently를 ..

장고 (Django) 2023.11.02

장고(Django) 모델 관계기반 필터링

학습에 앞서 먼저 학습에 앞서 위와 같이 choice들이 어떤 question에 대한 것인지 쉽게 알아볼 수 있도록 polls/models.py에서 class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return f'[{self.question.question_text}] {self.choice_text}' # 이곳을 수정 와 같이 __str__의 내용을 수정해주도록 합시다. 그리고 학습을 위해 위와 같이 ..

장고 (Django) 2023.11.02

3주차 - 4 [특강] 소프트웨어 개발 방법론 1

개발 단위의 사이클이 짧아지며(스프린트) 애자일 개발(Agile Development) 방법론이 부상 급변하는 시장 상황과 빈발하는 서비스 문제에 유연하고 빠른 대처가 가능하고 회의로 소요되는 시간을 최소화할 수 있다. 단 팀을 이끄는 누군가가 해당 서비스의 성공을 위한 작업, 과제가 무엇인지 정리를 해두어야 한다. 이를 (Backlog) Grooming이라 한다. 스프린트 시, 전체적인 과정 조망 JIRA, TRELLO, 경우에 따라서는 화이트보드 등의 도움을 받아 할 일(To do), 진행중(In progress), 테스팅(Testing), 리뷰(Review)로 나누어 관리 플래닝 백로그, 포인트: 일의 경중과 복잡도를 명확하게 표시하는 숫자, 어떤 경우가 성공인지 정의 등이 필요 포인트 제도 특정 ..

데브코스 TIL 2023.11.02

3주차 - 3 [장고(Django)] 어드민(Admin)과 장고 쉘(Shell)

두괄식 요약 1. 장고 어드민 페이지는 데이터를 관리하는 관리자들이 편리하게 데이터를 추가하고 수정할 수 있도록 제공되는 페이지를 말한다. 2. 어드민 페이지에서 모델을 다룰 수 있으며 장고 프로젝트 모델들의 데이터를 CRUD할 수 있도록 해준다. 3. 파이썬 쉘과 마찬가지로 장고도 장고 쉘을 제공한다. 4. 장고 쉘은 장고 환경을 터미널 환경에서 사용할 수 있도록 그대로 로딩한 것과 같다. 5. 한 가지 주의할 점, 장고 쉘은 앱/model.py에서 모델 설정 변경시 실시간 반영되지 않으므로 쉘 종료후 다시 켤 것 6. 데이터 CRUD시 각 테이블(모델)의 필드, PK, FK 등에 대해 숙지하고 있어야 장고의 편리성이 극대화된다. 7. 쉘 환경에서는 NOT NULL, 테이블 관계에 대한 예외처리에 특히..

데브코스 TIL 2023.11.01

장고(Django) 모델 필터링(Model Filtering) 2

필터의 인자에 넣을 수 있는 조건문들은 여러개가 있습니다. 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..

장고 (Django) 2023.11.01