IT/Python20 Django, MVT 패턴외에 다른 패턴이 사용 가능할까? 당연히 가능하다. 아래에는 어떤 서비스에 어떤 패턴을 적용시키면 좋은지 간략하게 설명해 놓았다. 0. MVT 패턴 1) MVT 패턴이란? MVT 패턴이란 Model-View-Templete이다. Model: 데이터와 비지니스 로직을 처리, 데이터베이스의 구조(스키마)를 정의하며, 데이터를 저장하고 검색하는 방법을 관리 View: 사용자에게 보여지는 데이터를 처리. 뷰는 모델로부터 데이터를 받아와 사용자에게 보여줄 최종 출력을 생성 Templete: 사용자 인터페이스. HTML로 구성되어 있으며, 부로부터 전달받은 컨텍스트(context) 데이터를 활용하여 사용자에게 보여지는 페이지를 렌더링 2) MVT 패턴이 적합한 서비스 데이터 중심의 웹 애플리케이션: 모델을 통해 데이터를 관리하고, 템플릿을 통해 사.. 2024. 4. 7. Django, gunicorn + nginx를 사용하여 안정적으로 배포(Ubuntu) 0. 개요 Django로 웹 애플리케이션을 개발했다면, 이제 프로덕션 환경에서 안정적으로 배포하고 사용자에게 서비스를 제공해야 할 때입니다. 개발 서버인 python manage.py runserver로는 충분하지 않습니다. 이 블로그 게시물에서는 Django 애플리케이션을 Gunicorn과 Nginx를 사용하여 프로덕션 환경으로 안전하게 배포하는 방법을 소개합니다. 거의 필수 겠지만 AWS EC2 등과 같은 클라우드 환경에서 진행하셔야 24시간 구동 가능한 서버를 만들 수 있습니다. 1. Gunicorn Gunicorn(Green Unicorn)은 Python 웹 애플리케이션을 서빙하기 위한 WSGI HTTP 서버 개발 서버보다 안정적이며 병렬 처리를 지원하여 높은 트래픽을 처리 2. Nginx Ngi.. 2024. 4. 7. Django 배포의 시작, 웹 서버 선택하기:Ngnix vs Apache(Ubuntu, Apache 에러날 경우 아래 링크 확인) 0. 개요 Django애플리케이션 배포를 도와는 툴에는 Nginx와 Apache가 있다고 한다. 이 두 툴은 무엇을 하는지 차이는 무엇인지 알아보자. 1. Apache 1) Apache란? 인터넷을 통해 액세스되는 웹 콘텐츠를 제공하기 위해 개발 월드 와이드 웹의 초기 성장에 핵심적인 역할 개방형 개발자 커뮤니티에서 개발 및 유지 관리하는 오픈소스 소프트웨어 연결을 수락하고 동시성을 관리 특정 Apache 배포는 보안 기능, 동적 콘텐츠 관리 또는 기본 HTTP 요척과 같은 다양한 모듈을 포함하도록 구성할 수 있다. 2. Nginx 1) Nginx이란? Apache 웹 서버의 성능 제한을 해결하기 위해 특별히 자성 성능과 확장성은이벤트 드라이브 n 아키텍처에서 비롯. Apache의 연결당 프로세스 또는 .. 2024. 4. 7. EC2, Django 연동 1. EC2 인스턴스는 키고 끌 때마다 IP 주소가 변경되기 때문에, 고정 IP를 위해서 elastic IP주소를 할당 탄력적 IP 주소 할당 2. SSH접속 Bitvise SSH Client를 사용, 키페어 import, 할당받은 IP주소와 22번 포트, username ubuntu EC2 환경구성 sudo apt-get update sudo apt-get upgrade sudo apt-get install python3-pip sudo pip install django virtuallenv를 사용하기 위해 EC2에서 virtualenv를 구성 pip install virtualenv virtualenv -p python3 venv_for_django source venv_for_django/binac.. 2024. 4. 7. Django, 사용자가 로그인 했는지 확인하는 decorator 0. 인증과 인가 인증: 사용자의 신원을 증명하는 것 인가: 인증과 달리 액세스 권한을 확인하는 프로세스 Django에서 권한 확인을 도와주는 데코레이터에 대해서 알아보자. 1. view.py 1) 적용된 데코레이터 @login_required(login_url='accounts:login') 을 작성해주면된다. ..... ..... from django.contrib.auth.decorators import login_required @login_required(login_url='accounts:login') def answer_create(request, question_id): """ pybo 답변 등록 """ question = get_object_or_404(Question, pk=questi.. 2024. 4. 7. Django, 탬플릿 태그를 활용하여 DB에 등록된 데이터 출력 및 페이징네이션 0. 개요 DB에 데이터를 저장하는 부분은 생략합니다. models.py from django.db import models from django.contrib.auth.models import User # Create your models here. class Question(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE) subject = models.CharField(max_length = 200) content = models.TextField() create_date = models.DateTimeField() def __str__(self): return f'{self.subject}' 1. view.py fr.. 2024. 4. 7. Django, forms를 활용하여 사용자로부터 데이터 수집하기ModelForm 0. Django의 forms 시스템 사용자로부터 데이터를 수집하고 처리하는 간편하고 강력한 방법 제공 폼은 사용자가 웹 양식을 통해 데이터를 입력하고, 그 데이터를 서버에 전송 1. Forms의 주요 기능 입력 렌더링: 폼 필드를 HTML 양식 요소로 변환. 데이터 검증: 사용자가 제출한 데이터를 검증하고, 유요하지 않은 입력에 대한 오류 메시지를 생성 데이터 정리: 입력한 데이터를 Python데이터 타입으로 변환하고, 추가적인 처리를 수행 보안:CSRF 공격으로부터 보호하기 위한 메커니즘을 제공 2. Form의 활용 데이터 검증: 사용자가 제출한 데이터가 폼 필드에 정의된 조건을 충족하는지 확인 에러 메시지 처리: 유효하지 않은 데이터에 대해 사용자에게 피드백을 제공 데이터 저저아: ModelForm.. 2024. 4. 7. Django, 함수 기반 뷰(FBV), 클래스 기반 뷰 호출(CBV)의 차이 0. 개요 Django에서 뷰(View)는 웹 요청을 받고 응답을 반환하는 기능을 담당하는데 뷰는 크게 두 가지 방식으로 구현 함수 기만 뷰(Function_Based Views,FBV) 클래스 기반 뷰(Class-Based Views, CBV) 둘의 차이를 알아보자 1. FBV 1) FBV란? 간단하게 하나의 함수로 요청을 처리하는 방식 2) 장점 간결성: 작은 애플리케이션 또는 단순한 긴으을 구현할 때 코드가 간결 직관성: 함수의 시작부터 끝까지 코드의 흐름을 쉽게 파악 3) 예시 from django.shortcuts import render def my_view(request): return render(request, 'my_template.html', {'additional_data': 'Th.. 2024. 4. 7. Django에서 URLConf를 사용하여 Projcet와 App의 URL을 연결 0. 개요 Django에서 프로젝트를 생성하고 app을 생성하여 개발을 진행한다. Project: 하나 이상의 App을 포함하는 완전한 웹 애플리케이션 App: Django프로젝트의 구성 요소로, 특정 기능 또는 기능 집합 구현 이러한 App과 Project의 Url을 URLConf를 사용하여 연결해보자 1. 예시 1) Project의 urls.py from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls')), # 'blog' App의 URL 포함 ] 2) 'blog' App의 urls.p.. 2024. 4. 7. 이전 1 2 3 다음