Docker란? 🐳
·
Programming
Docker란 Go언어로 작성된 리눅스 컨테이너 기반의 오픈소스 가상화 플랫폼 Docker 란? IT 소프트웨어인 "Docker”는 Linux 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술입니다. Docker 컨테이너의 이점 모듈성 Docker의 컨테이너화 접근 방식은 전체 애플리케이션을 분해할 필요 없이 애플리케이션의 일부를 분해하고, 업데이트 또는 복구하는 능력에 집중되어 있습니다. 사용자는 이 마이크로서비스 기반 접근 방식 외에도 SOA의 작동 방식과 동일하게 멀티플 애플리케이션 사이에서 프로세스를 공유할 수 있습니다. 계층 및 이미지 버전 제어 각 Docker 이미지 파일은 일련의 계층으로 이루어져 있으며 이 계층들은 단일 이미지로 결합됩니다. 이미지가 변경될 때 계층이 생성되고, 사용..
제네릭 뷰 정리
·
Programming
get_success_url 메소드 get_success_url 메소드는 POST 리퀘스트를 처리하는 CreateView, UpdateView, DeleteView에서 사용됩니다. POST 리퀘스트가 성공적으로 처리됐을 때 (예를 들어 오브젝트가 성공적으로 생성됐을 때) 리디렉트되는 URL을 정하는 건데요. CreateView, UpdateView, DeleteView를 사용할 때는 get_success_url 메소드를 정의해 줘야 합니다. # URL 파라미터가 없는 경우class MyView(CreateView): ... def get_success_url(self): return reverse('index') # URL 파라미터가 있는 경우class MyView(CreateView): ... def ..
AccessMixin 정리 노트
·
Programming
Mixin이란? Mixin은 파이썬의 일반적인 개념인데, 기존의 클래스에 어떤 기능을 더해줄 때 쓰입니다. 우리의 경우 mixin을 활용해서 뷰 클래스에 접근 제어 기능을 더해줬습니다. 우리는 django-braces(링크 추가)라는 패키지를 사용했는데요. django-braces는 사실 django에서 사용할 수 있는 다양한 mixin을 제공합니다. 우리는 그중에서 LoginRequiredMixin과 UserPassesTestMixin을 사용해 봤습니다. LoginRequiredMixin LoginRequiredMixin은 로그인이 돼있는 유저만 뷰에 접근할 수 있게 해 줍니다. 로그인 여부를 확인하는 로직이 뷰 로직보다 먼저 실행돼야 하기 때문에 제네릭 뷰 왼쪽에 씁니다. class MyView(Lo..
[Django]allauth URL & 유용한 세팅들🔎
·
Programming
'signup/' 'account_signup' 회원가입 페이지 'login/' 'account_login' 로그인 페이지 'logout/' 'account_logout' 로그아웃 페이지 (ACCOUNT_LOGOUT_ON_GET = True 사용시 바로 로그아웃 됩니다. ACCOUNT_LOGOUT_ON_GET은 settings.py 파일에서 설정합니다. 'allauth 유용한 세팅들 정리' 노트를 참고하세요!) 'confrim-email//' 'account_confirm_email' 이메일 인증 페이지 (ACCOUNT_CONFIRM_EMAIL_ON_GET = True 사용시 바로 인증 완료 됩니다.) 'password/change/' 'account_change_password' 비밀번호 변경 페이지 ..
Django Class-Based Views(클래스형 뷰)🧡
·
Programming
클래스형 뷰란? (Class-Based Views) - 개발자들이 자주 쓸만한 view를 클래스로 만들어 준 것 클래스형 뷰 구현하기! ⚒ *기존의 함수형태 def page_create(request): if request.method == 'POST': form = PageForm(request.POST) if form.is_valid(): new_page = form.save() return redirect('page-detail', page_id=new_page.id) else: form = PageForm() return render(request, 'diary/page_form.html', {'form': form}) ⬇️ *클래스형 뷰로 변경 한 상태 class PageCreateView(Vi..
pagination 구현하기📝
·
Programming
View 구현하기 먼저 Paginator를 import 합니다.from django.core.paginator import Paginator page_list 뷰에 Paginator를 생성합니다. Paginator는 첫 번째 파라미터로 페이지를 나눌 데이터 목록을, 두 번째 파라미터로는 한 페이지에 표시할 데이터의 개수를 받습니다. def page_list(request): object_list = Page.objects.all() paginator = Paginator(object_list, 8) # Paginator 생성 return render(request, 'diary/page_list.html', {'object_list': object_list}) 현재 보여줄 페이지의 번호를 쿼리스트링으로 ..
Django 페이지네이션(Pagination)🗒
·
Programming
페이지네이션(Pagination) 페이지네이션이란 데이터를 일정 길이로 나누어서 전달하는 기능입니다. 일반적으로 가지고 있는 데이터가 한 화면에 모두 보여 주기에 너무 많은 경우 사용하죠. 우리가 여러 웹 페이지에서 '이전 페이지로 가기' 또는 '다음 페이지로 가기' 등으로 자주 볼 수 있는 기능입니다. 페이지네이션은 프론트엔드와 백엔드에서 모두 구현이 필요합니다. 백엔드에서는 페이지 별 데이터를 데이터베이스로부터 가져와서 프론트에게 넘겨 주어야 하고 프론트엔드에서는 받은 데이터 목록과 페이지에 대한 정보를 화면에 표시하도록 만들어 주어야 합니다. Django의 페이지네이션 Django는 페이지네이션을 쉽게 구현할 수 있도록 하는 Paginator를 제공합니다. Paginator는 총 두 개의 파라미터만..
seed data(씨드 데이타 만들기)🌈🌻
·
Programming
pip를 이용해서 'django-seed'를 설치해 주세요. pip install django-seed django-seed를 사용하기 위해서는 settings.py의 INSTALLED_APPS 항목에 'django_seed'를 추가해 주어야합니다. # settings.py ... # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'diary', 'django_seed', # 추가합니다. ]..
Django Form Field ❄️💧
·
Programming
Django Form Field Django 폼(Form)을 작성할 때 가장 중요한 부분이 바로 데이터에 맞는 폼 필드를 작성하는 것입니다. Django는 입력 데이터에 따라 사용할 수 있는 여러 내장 폼 필드를 제공하는데, 각각의 폼 필드는 그에 맞는 입력 위젯을 기본으로 가지고 있습니다. 아래는 Django에서 제공하는 몇 가지 필드 목록과 옵션들 입니다. 필드설명옵션기본 위젯 CharField 문자열 입력을 위한 필드입니다. max_length : 최대 길이 설정 min_length : 최소 길이 설정 strip : 문자열 앞뒤 공백을 제거합니다. (기본값: True) empty_value : 비어 있는 값을 나타낼 값 (기본값: 빈 문자열) TextInput EmailField 이메일 입력을 위한..
HTML Form ✨💫
·
Programming
HTML Form 폼은 웹 페이지에서 사용자의 데이터를 입력받을 수 있는 입력 양식을 말합니다. 아래에서 배우는 여러 Form 요소들은 Django에서 제공하는 폼을 사용하면 저절로 생성되지만 기본적인 HTML 폼을 알고 있으면 Django의 폼을 이해하는데 많은 도움이 됩니다. label과 input 폼은 form태그 안에 사용자의 입력을 받는 input태그와 설명을 위한 label태그의 쌍으로 구성됩니다. 이름 for & id 각각의 input태그와 label태그를 묶어주기 위해서 label태그에는 for 속성, input태그에는 id가 사용됩니다. 제목 만약 여기에서 for와 id 속성을 적어주고 싶지 않다면 label 태그로 input태그를 감싼 형태를 사용하면 됩니다. 제목 name name은 ..
Django Model API 🗝🍎
·
Programming
Django Model API Django에서 Model을 정의하면 ORM을 통해 데이터베이스와 소통할 수 있는 API를 제공합니다. 여기서는 우리가 사용하는 Model API를 정리하고 조금 더 자세히 살펴보겠습니다. API란? 우리가 앞에서 데이터베이스를 조작할 때 사용했던 아래와 같은 모든 명령어들이 바로 API 입니다. .objects.all() # 모든 데이터 가져오기 .objects.get() # 조건에 맞는 데이터 1개 가져오기 API란 Application Programming Interface의 약자로 어플리케이션에서 시스템의 기능을 제어할 수 있도록 만든 인터페이스를 말합니다. 쉽게 말하면 어떤 기능을 쉽게 사용할 수 있도록 만든 체계라고 할 수 있는데요, 예를 들어 여러분이 식당에 가..
프로젝트 생성 및 설정 💌
·
Programming
django project 생성 VScode 1. 프로젝트를 담을 폴더를 생성한 뒤 해당 폴더로 이동한다. mkdir django_projects cd django_projects 2. 가상 환경을 적용한다. pyenv local django-enves 3. 프로젝트를 생성한다. django-admin startproject 프로젝트명 4. VScode IDE에서 프로젝트 불러오기. cd 프로젝트명 code . ------------------------------------------------------------------------------ Pycharm new project -> Django -> 프로젝트 생성 기준 시간 설정 : TIME_ZONE = 'Asia/Seoul'로 변경 (한국 시간..