개발로 자기계발
728x90
SMALL
article thumbnail
FastAPI(CNN 모델)와 Django(웹 구현)연동 - 다중 이미지 input
Develop/FastAPI 2023. 4. 5. 21:52

Django에서 웹을 만들고 FastAPI에서 딥러닝 모델을 돌리기 위해서 서버를 분리했다. Django에서 FastAPI API를 연결해서 데이터를 주고 받았고, 이미지를 다중으로 받아야 했기 때문에 리스트 형태로 받았다. 1) FastAPI 함수 구성 @app.post('/cnn_model') async def cnn_model(uploaded_files: List[UploadFile] = File(...)) -> JSONResponse: # 결과와 이미지를 딕셔너리에 담아 리스트에 추가 image_with_results = [] # 업로드된 파일의 객체를 바이너리로 이미지 데이터를 읽는다. for uploaded_file in uploaded_files: content = await uploaded..

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와 연결을 해줄 ..

article thumbnail
Django 시작하기(생성 명령어, Setup 연습) - 1
Develop/Django 2023. 2. 19. 23:36

IDE: VS Code 버전: Python 3.11 운영체제: MacOS 가상환경 구성(내부 라이브러리) python -m venv .venv 가상환경 구성(외부 라이브러리) pip install virtualenv virtualenv myenv or virtualenv .venv --python={파이썬 버전} 가상환경 활성화 source .venv/bin/activate 가상환경 비활성화 deactivate 가상환경 패키지 문서 https://docs.python.org/3/tutorial/venv.html 생성 명령어 구분 명령어 장고 설치 pip3 install django or python3 -m pip install Django 장고 프로젝트 생성 django-admin startproject..

728x90
SMALL