개발로 자기계발
728x90
SMALL
Django에서 SSH 터널링(EC2)으로 RDS 연동하기
Develop/Django 2023. 5. 5. 19:19

SSH 터널링SSH(Secure Shell) 프로토콜을 사용하여 네트워크 상의 다른 컴퓨터와 안전하게 통신할 수 있는 방법이다. 주로 두 가지의 유형이 있는데1. 로컬 포트 포워딩2. 리모트 포트 포워딩 현재 글에서는 로컬 포트 포워딩으로 진행될 것이다.서버는 EC2의 서버가 될 것이고, 데이터베이스는 RDS가 될 것이다.서버는 Ubuntu를 사용 중이다. 설치1) 라이브러리 설치pip install sshtunnel 2) 라이브러리 importfrom sshtunnel import SSHTunnelForwarder 3) Setting.py의 Database섹터에 SSH 터널 설정server = SSHTunnelForwarder( (Environ.SSH_TUNNEL_HOST, Environ.SSH_..

article thumbnail
Django 프로젝트를 위한 Docker 환경 구성 가이드
Develop/Django 2023. 4. 16. 15:53

계속해서 Docker에 관심이 갔었고 이번 기회에 Docker 환경에서 Django 실행까지 가이드를 작성해보려고 한다. 도커를 사용하는 이유Docker는 애플리케이션과 그 종속성을 컨테이너라는 격리된 환경에 패키징하여 개발, 테스트, 배포 등의 과정에서 발생할 수 있는 환경 차이를 최소화한다. 이를 통해 개발 환경 구성을 간소화하고, 프로젝트의 일관성과 이식성을 높일 수 있다. 사전 설정Docker Desktop 다운https://www.docker.com/products/docker-desktop/ Download Docker Desktop | DockerDocker Desktop is available to download for free on Mac, Windows, or Linux operati..

article thumbnail
Django (페이징 뷰) 검색 페이지 기능 구현하기
Develop/Django 2023. 3. 24. 00:53

1) 라이브러리 from django.core.paginator import Paginator 장고 내에 구현된 라이브러리로 불러온 객체를 페이징 객체로 변환시켜 준다. 2) 페이지 옵션 설정 # 장고ORM으로 데이터 쿼리셋 추출 foods = models.Food.objects.filter(name__icontains=food).order_by('name') 데이터 쿼리 셋을 가져왔다고 가정해 보자(filter내 들어가 있는 것은 Like 검색이다) # 한 페이지에 n개씩 노출 page_count = n # foods의 쿼리셋을 페이징객체로 변환시키고 n개를 한 페이지에 보여준다. paginator = Paginator(foods, page_count) # 현재 웹에서 요청하는 페이지 번호를 가져온다...

article thumbnail
Django View에서 HTML 태그 넣어보기 - 8
Develop/Django 2023. 2. 27. 22:37

간단하게 HTML 태그를 넣어서 HttpResponse가 가능하다. 1) formating을 통해 를 넣어준다. def monthly_challenge(request, month): response = monthly_case.get(month) response_data = f"{response}" if response: return HttpResponse(response_data) return HttpResponseNotFound(f"Not month") h1는 제목 태그로 텍스트를 제목 형식으로 변경해 준다. 기존의 받은 데이터가 크기가 커지고 굵어진 것을 볼 수 있다. 2) 새롭게 index 함수를 생성한다. def index(request): response_data = """ January """..

Django URL reverse / URL name - 7
Develop/Django 2023. 2. 27. 22:28

앞서 다뤄본 것은 "Redirect"였다. 여기서 monthly_challenge_by_number 함수의 redirect 구문에 challenges를 지정해서 넣어줬었다. 하지만 이렇게 되면 monthly_challenges 폴더의 urls.py에 url을 변경하게 되면 페이지를 호출할 수 없게 된다. 물론, 함수의 redirect구문을 똑같이 변경해주면 문제가 없다. 하지만 웹 규모가 커지게 되면 오류를 찾기가 힘들 수 있다. ex) monthly_challenges 폴더 URL challenges => challenge urlpatterns = [ path("challenge/", include("challenges.urls")) ] ex) monthly_challenge_by_number 함수 c..

article thumbnail
Django 리다이렉트(Redirect) - 6
Develop/Django 2023. 2. 26. 16:36

Redirect 리다이렉트란 다시 지시하는 것을 의미한다. 클라이언트에서 A라는 URL을 서버에게 요청했을 때 서버는 클라이언트에게 B로 다시 재요청하라는 것이다. 즉, A 요청 >> B 재요청 >> B 페이지 제공 1) 앞서 int로 생성했던 함수를 수정해 본다. def monthly_challenge_by_number(request, month: int): monthly_case_key = list(monthly_case.keys()) if month > len(monthly_case_key): return HttpResponseNotFound("Not month") response = monthly_case_key[month - 1] return HttpResponseRedirect(f"/chall..

Django 동적 URL 패턴 로직 추가- 5
Develop/Django 2023. 2. 26. 15:47

1개의 함수 안에 많은 if문을 하게 되면 코드 가독성 부분과 확장성에 제한이 있다. 그래서 함수안의 데이터를 분리시켜 로직을 짜게 되면 코드 관리가 편해진다. 1) 월의 집합을 dict로 생성한다. monthly_case = {"january": "Django is fun!", "february": "Coding for at least 1 hour every day!", "march": "Hard Coding is hard", "april": "Let's split the if statement", "may": "Create new function", "june": "Code management made easy", "july": "Django is fun!", "august": "Coding for ..

article thumbnail
Django 경로 변환(타입 추가) - 4
Develop/Django 2023. 2. 26. 15:19

경로에 타입을 지정할 수 있다. 1) challenges/url.py의 경로에 타입을 추가해 본다. from django.urls import path from . import views urlpatterns = [ path("", views.monthly_challenge_by_number), path("", views.monthly_challenge) ] 2) View에서는 int로 받는 값을 그대로 return 한다. from django.shortcuts import render from django.http import HttpResponse, HttpResponseNotFound def monthly_challenge_by_number(request, month): return HttpResp..

article thumbnail
Django 동적 URL 패턴(Dynamic Path Segments) - 3
Develop/Django 2023. 2. 25. 23:34

앞서 FastAPI의 라우팅과 같은 방식으로 간단히 다뤘다.(타 폴더의 값을 메인 폴더에서 읽음) 다만 하드 코딩된 URL 패턴을 사용했고, 이는 확장성이 좋지 않다.(많은 페이지가 있다면 모든 경로를 추가해야 함) 그래서 하나의 경로 패턴으로 많은 페이지를 처리할 수 있도록 해야 한다. Django에서 동적 URL 패턴을 위해서 Angle Brackets: ''을 사용한다. 1) 기존의 코드를 동적 URL 패턴으로 바꿔보자. 우선 views.py을 수정한다. from django.shortcuts import render from django.http import HttpResponse, HttpResponseNotFound # Create your views here. def monthly_chall..

article thumbnail
Django View & URL 다뤄보기 - 2
Develop/Django 2023. 2. 25. 22:58

View MVC Framework에서 말하는 Controller와 비슷한 역할(장고는 MVT라고 한다.) Client에서 보낸 Request에 대해서 Response을 보내주는 역할 View는 사용자의 요청을 수락하고 응답을 반환한다. User Request / Response Server Database 1. app challenges의 "view.py"을 수정 from django.shortcuts import render from django.http import HttpResponse # Create your views here. def index(request): return HttpResponse("This works!") # 인스턴스화한다. - 기본적으로 클래스 2. view와 연결을 해줄 ..

728x90
SMALL