Python 40

DRF viewset을 이용한 serializers, authenticated 실습

APIView -> Generic(APIView + Mixins) -> ViewSet(CRUD 다 가능. URL까지 DefaultRouter로 등록 권장) 실습 가상환경 설정 가상환경 활성화 django와 drf 설치 pip install django pip install djangorestframework startproject하고 blog 앱 생성 project / urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path("admin/", admin.site.urls), path('blog/', include('blog.urls')), path('api-auth/', include..

Django/DRF 2023.11.20

JWT (JSON Web Token)

JWT - JSON 형식의 토큰 - 인증, 정보 교환, 세션 관리 용도 (JWT를 사용하면 세션 정보를 관리할 필요가 없어짐)로 사용 JWT의 구성 - 헤더 : JWT의 유형 및 서명 알고리즘과 같은 메타 정보 포함. base64 인코딩 - 페이로드 : 실제로 전달하려는 정보 포함. base64 인코딩 - 서명 : 토큰의 유효성을 검증하기 위한 부분. 헤더, 페이로드, 비밀 키를 사용해서 생성. base64 인코딩 xxxxx[Header].yyyyy[Payload].zzzzz[Signature] Django와 JWT의 연계 - Django의 기본 인증 시스템은 웹 애플리케이션에서는 효과적이지만, RESTful API나 분산 시스템에서 제한사항이 존재 (세션 유지와 관리 때문에 서버에 저장공간이 필요하고 ..

Django/DRF 2023.11.17

TDD (Test-Driven Development)

단위 테스트 (unit test) : 개별 함수나 메서드 같은 코드의 가장 작은 단위가 예상대로 동작하는지 검증하는 테스트. - Python 에서 unittest 모듈을 이용해서 단위 테스트를 작성하고 실행할 수 있음 import unittest # 모듈 import def add(x, y): # 더하는 함수 return x + y class TestAdd(unittest.TestCase): # 단위 테스트 def test_add(self): self.assertEqual(add(1, 2), 3) # add(1,2)가 3과 같은지 확인 if __name__ == '__main__': unittest.main() # 결과가 OK로 나옴 import unittest def add(x, y): return x..

Django 2023.11.16

Django 프로젝트(1) - Hot🔥Deal Blog

https://github.com/UserDongHu/Blog_Project 처음으로 해본 Django 프로젝트. 멘탈 깨진채로 끝까지 완성한 나 칭찬해.. 다음에는 더 진심으로 프로젝트에 몰두하는걸로.. Django Blog Project - Hot🔥Deal Blog 다양한 핫딜 정보를 게시할 수 있는 블로그 입니다. 필요한 물건을 정보 공유를 통해서 저렴한 가격으로 구매할 수 있는 웹사이트 입니다. 카테고리별로 다양한 핫딜 정보를 볼 수 있습니다. 게시글을 통해 바로 쇼핑몰 링크로 이동하여서 구매할 수 있습니다. 1. 목표와 기능 1.1 목표 Django를 통해 핫딜 정보를 게시할 수 있는 블로그 개발 Accounts(로그인, 회원가입)과 CRUD(생성, 읽기, 업데이트, 삭제) 기능을 CBV로 구현..

Django 2023.11.08

Django와 SQLite3

Django에서 DB(SQLite3)에 접근하는 방법은 여러가지가 있는데, 그중 하나는 https://userdonghu.tistory.com/entry/Django-%EC%8B%A4%EC%8A%B545-ORM-CRUD Django ORM을 이용해서 DB CRUD 해보기 공식문서 : https://docs.djangoproject.com/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet Django The web framework for perfectionists with deadlines. docs.djangoproject.com Django ORM : 우리가 만든 모델 클래스와 DB에 생성된 userdonghu.tistory.com 와 같이 ..

Django 2023.10.23

Django 실습(9) 동영상 CRUD 구현하기

CBV를 이용해서 모놀로그식 방식으로 동영상 CRUD와 로그인을 구현해보자. url링크는 다음과 같다. /tube # 목록 /tube/1 # 영상 재생과 /tube/create/ # 게시물 생성 /tube/update// # 게시물 업데이트 /tube/delete// # 게시물 삭제 /tube/tag// # 해당 태그를 가진 게시물 목록 /tube/?q='keyword' # 키워드 검색 목록 /accounts/signup/ # 가입 /accounts/login/ # 로그인 /accounts/logout/ # 로그아웃 /accounts/profile/ # 프로필 실습 tube, accounts 앱 추가, settings.py 수정 'DIRS': [BASE_DIR / 'templates'], LANGUAGE..

Django 2023.10.20

Django 실습(8) RDB(관계형 데이터베이스) 만들어보기

RDB : Relational DataBase. 테이블을 통해 데이터 집합을 표현하는 방식의 데이터베이스. - 계층형 데이터베이스 (1:N) - 망형 데이터베이스 (N:M) 실습 tutorialdjango 프로젝트를 만들고, startapp blog후, settings.py를 수정해준다. DB 모델 설계 blog / models.py 에 모델 구현 구현 후 makemigrations, migrate 하기 from django.db import models from django.contrib.auth.models import User # User 모델을 import class Post(models.Model): title = models.CharField(max_length=100) content = mo..

Django 2023.10.17

Django 템플릿 필터

앞으로 settings.py 에 다음과 같이 코드를 수정한다. LANGUAGE_CODE = 'ko-kr' TIME_ZONE = 'Asia/Seoul' 템플릿 필터 : 템플릿에서 데이터를 형식화하고 변환 가능 만약에 블로그 게시물들을 아래와 같이 posts로 템플릿에 보낸다면, def postlist(request): posts = Post.objects.all() return render(request, 'blog/postlist.html', {'posts':posts}) 템플릿 필터는 이렇게 쓸 수 있다. {% for i in posts %} {{i.id}} {{i.title}} 대문자 : {{i.content|upper}} 소문자 : {{i.content|lower}} 줄바꿈안함 : {{i.conte..

Django 2023.10.17

Django CBV - 제네릭 뷰 (Generic View)

제네릭 뷰 : Django에서 제공하는 CBV(Class-Based View)로, 자주 쓰는 View가 미리 만들어져있다. 상속받아서 사용 공식 문서 : https://docs.djangoproject.com/en/4.2/ref/class-based-views/ Django The web framework for perfectionists with deadlines. docs.djangoproject.com Base views 뷰 클래스를 생성하고, 다른 제네릭 뷰의 부모 클래스가 되는 기본 제네릭 뷰 - View : 최상위 제네릭 뷰, 기본 뷰, Django view를 만드는데 필요한 기능 제공 - TemplateView : 템플릿이 주어지면 렌더링을 해주는 뷰 - RedirectView : URL이 ..

Django 2023.10.16

Django 실습(7) 클래스 기반 뷰 (Class-Based Views) 이용하기

그 전까지는 함수 기반 뷰를 이용해서 views.py를 만들었지만, 이제는 클래스 기반 뷰를 통해서 좀 더 쉽게 만들어보자. generic 클래스에 대한 실습 이제는 각 프로젝트마다 venv를 만들지않고 하나의 가상환경을 계속해서 쓰자. pip freeze > requirements.txt 를 이용해서 버전관리를 할 수 있다. 설치할때는 pip install -r requirements.txt 사용 그리고 .gitignore파일을 만들고 venv를 입력해서 가상환경은 무시하도록 한다. startproject를 하고, startapp으로 blog를 만들어서 클래스 기반 뷰를 사용해보자. tutorialdjango / urls.py from django.contrib import admin from djan..

Django 2023.10.16