AccessMixin 정리 노트
·
Software Developer
Mixin이란? Mixin은 파이썬의 일반적인 개념인데, 기존의 클래스에 어떤 기능을 더해줄 때 쓰입니다. 우리의 경우 mixin을 활용해서 뷰 클래스에 접근 제어 기능을 더해줬습니다. 우리는 django-braces(링크 추가)라는 패키지를 사용했는데요. django-braces는 사실 django에서 사용할 수 있는 다양한 mixin을 제공합니다. 우리는 그중에서 LoginRequiredMixin과 UserPassesTestMixin을 사용해 봤습니다. LoginRequiredMixin LoginRequiredMixin은 로그인이 돼있는 유저만 뷰에 접근할 수 있게 해 줍니다. 로그인 여부를 확인하는 로직이 뷰 로직보다 먼저 실행돼야 하기 때문에 제네릭 뷰 왼쪽에 씁니다. class MyView(Lo..
[Django]allauth URL & 유용한 세팅들🔎
·
Software Developer
'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(클래스형 뷰)🧡
·
Software Developer
클래스형 뷰란? (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 구현하기📝
·
Software Developer
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)🗒
·
Software Developer
페이지네이션(Pagination) 페이지네이션이란 데이터를 일정 길이로 나누어서 전달하는 기능입니다. 일반적으로 가지고 있는 데이터가 한 화면에 모두 보여 주기에 너무 많은 경우 사용하죠. 우리가 여러 웹 페이지에서 '이전 페이지로 가기' 또는 '다음 페이지로 가기' 등으로 자주 볼 수 있는 기능입니다. 페이지네이션은 프론트엔드와 백엔드에서 모두 구현이 필요합니다. 백엔드에서는 페이지 별 데이터를 데이터베이스로부터 가져와서 프론트에게 넘겨 주어야 하고 프론트엔드에서는 받은 데이터 목록과 페이지에 대한 정보를 화면에 표시하도록 만들어 주어야 합니다. Django의 페이지네이션 Django는 페이지네이션을 쉽게 구현할 수 있도록 하는 Paginator를 제공합니다. Paginator는 총 두 개의 파라미터만..
seed data(씨드 데이타 만들기)🌈🌻
·
Software Developer
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 ❄️💧
·
Software Developer
Django Form Field Django 폼(Form)을 작성할 때 가장 중요한 부분이 바로 데이터에 맞는 폼 필드를 작성하는 것입니다. Django는 입력 데이터에 따라 사용할 수 있는 여러 내장 폼 필드를 제공하는데, 각각의 폼 필드는 그에 맞는 입력 위젯을 기본으로 가지고 있습니다. 아래는 Django에서 제공하는 몇 가지 필드 목록과 옵션들 입니다. 필드설명옵션기본 위젯 CharField 문자열 입력을 위한 필드입니다. max_length : 최대 길이 설정 min_length : 최소 길이 설정 strip : 문자열 앞뒤 공백을 제거합니다. (기본값: True) empty_value : 비어 있는 값을 나타낼 값 (기본값: 빈 문자열) TextInput EmailField 이메일 입력을 위한..
HTML Form ✨💫
·
Software Developer
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 🗝🍎
·
Software Developer
Django Model API Django에서 Model을 정의하면 ORM을 통해 데이터베이스와 소통할 수 있는 API를 제공합니다. 여기서는 우리가 사용하는 Model API를 정리하고 조금 더 자세히 살펴보겠습니다. API란? 우리가 앞에서 데이터베이스를 조작할 때 사용했던 아래와 같은 모든 명령어들이 바로 API 입니다. .objects.all() # 모든 데이터 가져오기 .objects.get() # 조건에 맞는 데이터 1개 가져오기 API란 Application Programming Interface의 약자로 어플리케이션에서 시스템의 기능을 제어할 수 있도록 만든 인터페이스를 말합니다. 쉽게 말하면 어떤 기능을 쉽게 사용할 수 있도록 만든 체계라고 할 수 있는데요, 예를 들어 여러분이 식당에 가..
프로젝트 생성 및 설정 💌
·
Software Developer
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'로 변경 (한국 시간..
Django Model Field 🌼
·
Software Developer
모델 필드(Model Field) Django는 데이터의 타입에 따라 알맞은 필드(Field)를 사용해서 데이터를 다룹니다. 필드 유형(Field Types) 필드 유형 공식문서 바로 가기 CharField 최대 길이가 정해진 문자열 필드 max_length (최대 글자수) TextField 최대 길이가 정해지지 않은 문자열 필드 EmailField CharField와 같은 문자열 필드지만 입력된 형식이 이메일 형식 인지를 체크하는 필드 max_length=254 (기본값) URLField CharField과 같은 문자열 필드지만 입력된 형식이 URL 형식 인지를 체크하는 필드 max_length=200 (기본값) BooleanField True, False 값을 갖는 필드 IntegerField 정수 ..
Django url 구조 ⚙️
·
Software Developer
"""mindNote URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/3.2/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path(..