Framework 29

Django - Model Relationship (M:N)

ManyToMany Relationship in Django  좋아요 (Like) 기능 구현User가 특정 Article에 좋아요(Like)를 누르는 기능→ User가 어떤 Article에 좋아요를 눌렀는지 저장 articles/models.py 1차 구현 (1:N 관계)class Article(models.Model): title = models.CharField(max_length=50) content = models.TextField() author = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="articles" ) like_user = models.F..

Django - Custom User Model

Django에서는 기본적으로 제공하는 User 모델이 있지만, 대부분의 프로젝트에서는 사용자 모델을 확장하여 추가적인 기능을 구현 AUTH_USER_MODEL 설정을 변경하여 기본 User Model을 대체할 수 있으며, 프로젝트 초기부터 Custom User Model을 적용하는 것이 권장됨AUTH_USER_MODEL 설정은 프로젝트 최초 마이그레이션에서 함께 진행하기를 권장USER Model은 비지니스로직 깊숙이 관여됨 → 중간에 변경 시 많은 변경사항을 야기 Custom User Model 적용 User 모델 정의 accounts/models.py에서 Django의 기본 AbstractUser를 상속받아 Custom User Model을 정의from django.db import modelsfrom..

Django - Static & Media

Django 정적 파일 & 미디어 파일 관리 Static Files (정적 파일) 서비스 로직의 영향을 받지 않고 그대로 제공되는 파일이미지 파일 (로고, 광고 이미지 등)CSS 파일( 스타일 적용)JavaScript 파일 (클라이언트 측 스크립트)  Django에서 정적 파일 관리Django는 정적 파일을 쉽게 다룰 수 있도록 기본적인 기능을 제공STATIC_URL 정적 파일을 제공할 때 사용하는 URL 경로개발 단계에서는 app/static 폴더 또는 STATICFILES_DIRS에 지정된 경로를 참조함*이 경로는 실제 디렉토리가 아닌 URL 경로  STATIC_ROOT 배포를 위해 모든 정적 파일을 모으는 디렉토리의 절대 경로 DEBUG=False인 배포 환경에서 사용됨python manage.py..

Django - 회원기능 구현하기

Django 회원가입, 회원탈퇴, 정보수정, 비밀번호 변경 구현   회원가입 (Signup)Django에서는 기본적으로 'auth.User'모델을 제공'UserCreationForm'을 사용하여 회원가입 기능을 구현할 수 있음 UserCreationFormusername과 password로 새로운 user를 생성하는 ModelFormusername, password1, password2를 가짐django.contrib.auth.forms django/django/contrib/auth/forms.py at 944745afe2ec45aed30cef799c250107f1364ca7 · django/djangoThe Web framework for perfectionists with deadlines. - d..

Django - Auth

Auth 인증(Auth)은 웹 개발에서 필수 요소Django 역시 이를 지원함  'django.contrib.auth' : 인증 관련 핵심 로직, 모델 제공'django.contrib.contenttypes' : 사용자 모델과 권한을 연결 인증 (Authentication) : 사용자가 누구인지 확인하는 과정권한 (Authorization) : 사용자가 특정 작업을 수행할 수 있는지 확인하는 과정Auth == 인증(Authentication) + 권한(Authorization)쿠키(cookie), 세션(session) HTTP와 쿠키/세션의 필요성  HTTP의 특징비연결지향(Connectionsless)한 번 요청에 대한 응답 후 연결이 종료됨무상태(Stateless)이전 요청을 기억하지 못함→ 쿠키와 ..

Django - URL Namespace

URL Namespace  URL 네임스페이스 적용 Django에서는 동일한 URL 네임을 사용하는 경우 네임스페이스를 지정하여 앱별로 URL을 고유하게 관리할 수 있도록 지원1. 각 'urls.py'에 'app_name'을 정의2. 템플릿 및 코드에서 'namespace:url_name' 형식으로 URL을 참조 'articles'와 'users'앱에 각각 'hello/'라는 동일한 URL 패턴이 있는경우  'articles/hello/'와 'users/hello'가 서로 다른 경로이므로 기본적으로 구별이 됨하지만 템플릿에서 URL을 참조할 때 문제가 발생  Index라는 template에서{% url 'hello' %} 혹은 views에서redirect('hello') 이렇게 작업할 시 Django는 ..

Django - Django Form과 ModelForm을 활용한 입력 폼 처리

유효성 검사와 Django Form 숫자만 입력해야하는 필드에 유저가 문자를 입력하는 경우가 발생하는 경우가 발생할 수 있음→이를 방지하기 위해 사용자 입력 데이터 유효성 검사→Django에서는 Form클래스를 제공하여 유효성 검사와 Form 구성을 간편하게 처리(Django의 Form을 사용하지 않고 이전에 직접 구현한 Form과 View 로직을 사용해도 무방함)  Django Form Class - Django Form 선언 Form을 View에 적용 Template에서 Form 렌더링form.as_p를 사용하면 각 필드가 태그로 감싸진 형태로 렌더링 됨 *Django의 렌더링 옵션https://docs.djangoproject.com/en/4.2/topics/forms/#form-rendering-..

Django - MTV 패턴을 활용한 RUD(Read, Update, Delete) 구현

Django MTV 패턴으로 게시글 RUD 구현하기  RUDRead : 상세 페이지 조회Update : 글 수정 (수정 및 저장 처리 분리)Delete : 글 삭제 (POST 방식만 허용) 편의성 개선상세 페이지 링크 추가목록 및 작성 페이지 간 이동 링크 추가 글 작성 후 목록 페이지로 리다이렉트글 작성 후 URL 이동이 이루어지지 않으면 브라우저에서 POST 요청이 반복될 가능성이 있음이를 방지하기 위해 redirect를 사용하여 'articles' 목록 페이지로 이동하도록 수정  실제로 render처리만 해서 띄운 create 페이지에서 command+r 을 연타한 결과중복된 데이터가 여러개 생성된 것을 볼 수 있다.   *PRG(Post-Redirect-Get) 패턴POST 요청 후 다른 URL로..

Django - MTV패턴을 활용한 C(Create)와 R(Read) 구현

Django의 MTV(Model-Template-View) 패턴은CRUD(Create, Read, Update, Delete) 작업을 명확하게 구현할 수 있도록 구조화되어 있음   C(Create) : 사용자 입력 폼과 데이터 저장 로직을 작성, 새로운 데이터를 데이터베이스에 저장R(Read) : 저장된 데이터를 데이터베이스에서 조회, 템플릿에 렌더링하여 사용자에게 표시연계 : Create에서 저장된 데이터를 Read에서 즉시 확인할 수 있도록 설계    모델 설계 앱(articles)내의 models.py - 데이터 구조 정의    View 정의 앱(articles)내의 views.py  Read(articles) : views.py에서 Model에 접근해 data를 가져와 Template으로 전달Cr..

Django - ORM(Object-Relational Mapping)

ORM(Object-Relational Mapping)  객체지향 언어(예: Python)의 객체를 사용해 데이터베이스를 조작할 수 있게 해주는 도구  • 객체지향 언어는 데이터를 클래스와 객체로 다루고,   관계형 데이터베이스는 테이블과 행으로 데이터를 관리→ 두 시스템 간의 개념적 차이를 줄이는 것이 ORM의 역할 ORM을 사용하면 SQL문을 직접 작성하지 않고도 Python 코드만으로 데이터베이스를 조작할 수 있음   ORM의 주요 사례 • Python: Django ORM, SQLAlchemy, Tortoise ORM • Java: JPA, Hibernate • Node.js: Sequelize Django 프로젝트에서는 별도의 언급 없이 ORM을 기본으로 사용(Django가 기본적으로 ORM기능..

728x90