분류 전체보기
-
[22.11.26] 🍃 ManytoMany 관계를 가진 두 모델 Bulk Create 작업 ✔️ 현재 위와 같이 등록된 항목에 대해 태그를 추가하는 기능을 개발 구현 중이다. 등록된 항목은 Scrap Parsing을 통해 특정 사이트에 관련한 url, 썸네일, 제목 등을 저장하여 접근할 수 있게 구현한 현황 화면이다. 특정 사이트를 선택하여 bulk(다중)로 태그를 등록할 수 있게 스크립트 구현 선택한 각 Site와 Tag Model이 ManytoMany 관계로 데이터 모델링 1. 모델 코드 📌 Tag Model class Site(models.Model): """ 항목에 관한 데이터 모델 """ title = models.CharField(verbose_name='타이틀', max_length=100)..
[ISSUE] ManytoMany 관계를 가진 두 모델 Bulk Create 작업[22.11.26] 🍃 ManytoMany 관계를 가진 두 모델 Bulk Create 작업 ✔️ 현재 위와 같이 등록된 항목에 대해 태그를 추가하는 기능을 개발 구현 중이다. 등록된 항목은 Scrap Parsing을 통해 특정 사이트에 관련한 url, 썸네일, 제목 등을 저장하여 접근할 수 있게 구현한 현황 화면이다. 특정 사이트를 선택하여 bulk(다중)로 태그를 등록할 수 있게 스크립트 구현 선택한 각 Site와 Tag Model이 ManytoMany 관계로 데이터 모델링 1. 모델 코드 📌 Tag Model class Site(models.Model): """ 항목에 관한 데이터 모델 """ title = models.CharField(verbose_name='타이틀', max_length=100)..
2023.05.06 -
[22.11.26] 🍃 중복되며 각 함수의 사전에 처리되는 작업 decorator 📌 SiteBulkAPIView - 벌크 즐겨찾기, 삭제 class SiteBulkAPIView(APIView): """ 벌크 항목 즐겨찾기, 삭제 api """ def get_list(self): pk_ids: list = self.request.data.get('pk_ids') return get_list_or_404(Site, id__in=pk_ids) def validate_ids(self): pk_ids: list = self.request.data.get('pk_ids') for id in pk_ids: get_object_or_404(Site,id=id) return self.get_list() def put(..
[ISSUE]decorator를 이용한 중복작업 전처리[22.11.26] 🍃 중복되며 각 함수의 사전에 처리되는 작업 decorator 📌 SiteBulkAPIView - 벌크 즐겨찾기, 삭제 class SiteBulkAPIView(APIView): """ 벌크 항목 즐겨찾기, 삭제 api """ def get_list(self): pk_ids: list = self.request.data.get('pk_ids') return get_list_or_404(Site, id__in=pk_ids) def validate_ids(self): pk_ids: list = self.request.data.get('pk_ids') for id in pk_ids: get_object_or_404(Site,id=id) return self.get_list() def put(..
2023.05.05 -
[22.11.29] 2종류 데이터를 받아오는 api, restful하게 변경 작업 🍃 many-to-many serialize ✔️ many-to-many 관계가 존재하는 Model Site, Tag의 데이터를 하나의 api를 요청해서 동시에 받아오도록 serialize와 models, view쪽 작업을 진행했었다. serializers.py **class TagSerializer(ModelSerializer): name = serializers.CharField(max_length=20, allow_blank=False, trim_whitespace=True) class Meta: model = Tag fields = ['id', 'name']** class SiteSerializer(ModelSeri..
[ISSUE] 2종 데이터 받아오는 api를 restful하게 변경 작업[22.11.29] 2종류 데이터를 받아오는 api, restful하게 변경 작업 🍃 many-to-many serialize ✔️ many-to-many 관계가 존재하는 Model Site, Tag의 데이터를 하나의 api를 요청해서 동시에 받아오도록 serialize와 models, view쪽 작업을 진행했었다. serializers.py **class TagSerializer(ModelSerializer): name = serializers.CharField(max_length=20, allow_blank=False, trim_whitespace=True) class Meta: model = Tag fields = ['id', 'name']** class SiteSerializer(ModelSeri..
2023.05.05 -
[22.11.24] Signup-AbstractBaseUser ✔️ Django에서 제공하고 있는 제공하는 auth-user를 사용하면 회원가입 시 기본적으로 secret key를 이용하여 password를 암호화, 로그인 시 session을 이용한 인증 인가를 손쉽게 이용할 수 있다. ✔️ 하지만 현재 진행하고 있는 프로젝트는 auth-user를 사용하지 않고 다른 user모델을 생성하여 사용자의 정보를 관리할 수 있게 따로 분리하였다. ✔️ Simple-JWT를 이용할 예정이라 session을 이용한 대한 인증 인가를 사용하지 않고, User에 필요한 사용자 정보를 custom 할 필요가 있기 때문에 제공해 주는 auth-user를 사용하지 않았다. 🍃 User 📌 User Model class Us..
[ISSUE] signup AbstractBaseUser class[22.11.24] Signup-AbstractBaseUser ✔️ Django에서 제공하고 있는 제공하는 auth-user를 사용하면 회원가입 시 기본적으로 secret key를 이용하여 password를 암호화, 로그인 시 session을 이용한 인증 인가를 손쉽게 이용할 수 있다. ✔️ 하지만 현재 진행하고 있는 프로젝트는 auth-user를 사용하지 않고 다른 user모델을 생성하여 사용자의 정보를 관리할 수 있게 따로 분리하였다. ✔️ Simple-JWT를 이용할 예정이라 session을 이용한 대한 인증 인가를 사용하지 않고, User에 필요한 사용자 정보를 custom 할 필요가 있기 때문에 제공해 주는 auth-user를 사용하지 않았다. 🍃 User 📌 User Model class Us..
2023.05.05 -
[22.11.23] APIView bulk update 구현 ✔️ 사용자가 빈번하게 찾아가는 사이트를 북마크처럼 저장하여 저장한 항목들에 대해 즐겨찾기로 등록하여 분류하는 기능을 구현하고 있다. 🍃 구현 화면 ✔️ 위의 이미지와 같이 사용자가 등록한 항목을 선택할 수 있고, 선택한 항목들을 bulk(다중)처리가 가능한 기능이다. 상단 Toolbar에서 "벌크"버튼 선택으로 등록된 사이트를 선택이 가능하게 javascript로 동적 구현 항목을 선택할 때마다 코드에 선언되어 있는 전역변수 selected_articles에 해당 항목에 대한 식별자(id)값을 쌓아주며 벌크 이벤트를 작동하기 위한 선작업을 진행한다. 🍃 클라이언트 javascript function favoriteBulkSelectedSite..
[ISSUE] APIView로 bulk update 구현[22.11.23] APIView bulk update 구현 ✔️ 사용자가 빈번하게 찾아가는 사이트를 북마크처럼 저장하여 저장한 항목들에 대해 즐겨찾기로 등록하여 분류하는 기능을 구현하고 있다. 🍃 구현 화면 ✔️ 위의 이미지와 같이 사용자가 등록한 항목을 선택할 수 있고, 선택한 항목들을 bulk(다중)처리가 가능한 기능이다. 상단 Toolbar에서 "벌크"버튼 선택으로 등록된 사이트를 선택이 가능하게 javascript로 동적 구현 항목을 선택할 때마다 코드에 선언되어 있는 전역변수 selected_articles에 해당 항목에 대한 식별자(id)값을 쌓아주며 벌크 이벤트를 작동하기 위한 선작업을 진행한다. 🍃 클라이언트 javascript function favoriteBulkSelectedSite..
2023.05.05 -
✔️ 자바스크립트에서 fetch 함수를 이용해서 서버와 통신을 하게 클라이언트단을 개발하고 있다. 🍃 fetch() 함수 비동기처리로 인한 문제 발생 📌 문제의 코드 function deleteBulkSelectedSite(){ /* bulk 삭제 이벤트 */ if (selected_articles.length > 0){ if(confirm('선택한 항목을 삭제하시겠습니까?')){ let data = setFechData("DELETE", {pk_ids: selected_articles, user: 'User Id'}) fetch(`/api/sites/bulk`, data) .then(response => { let status = response.status if (status == 200) alert..
[ISSUE] Asynchronous processing 비동기 처리 방식✔️ 자바스크립트에서 fetch 함수를 이용해서 서버와 통신을 하게 클라이언트단을 개발하고 있다. 🍃 fetch() 함수 비동기처리로 인한 문제 발생 📌 문제의 코드 function deleteBulkSelectedSite(){ /* bulk 삭제 이벤트 */ if (selected_articles.length > 0){ if(confirm('선택한 항목을 삭제하시겠습니까?')){ let data = setFechData("DELETE", {pk_ids: selected_articles, user: 'User Id'}) fetch(`/api/sites/bulk`, data) .then(response => { let status = response.status if (status == 200) alert..
2023.05.05 -
[22.11.20] Try to apply generics DestroyAPIView Generics View를 사용하지 않는 이유 ✔️ DRF로 서버단을 rest_framework가 지원해주는 generics View를 사용하지 않고 APIView만을 이용하여 프로젝트를 진행하기로 결정하였다. ✔️ 그렇게 결정한 이유는 generics 한 View를 사용하면 코드가 간결해지고 개발하기 편리해지긴 하지만 팀 프로젝트를 진행하며 그렇게 간결해지고 작동되는 로직을 파악하지 않고 무분별하게 사용하는 것을 우려하여 처음에는 자유롭게 customizing이 가능한 APIView를 사용하기로 했다. APIView로 작성된 Bulk Delete ✔️ 항목을 다중으로 삭제하기 위한 기능 개발을 위해 클라이언트 단에서 ..
[ISSUE] gernerics view, DestroyAPIView 적용[22.11.20] Try to apply generics DestroyAPIView Generics View를 사용하지 않는 이유 ✔️ DRF로 서버단을 rest_framework가 지원해주는 generics View를 사용하지 않고 APIView만을 이용하여 프로젝트를 진행하기로 결정하였다. ✔️ 그렇게 결정한 이유는 generics 한 View를 사용하면 코드가 간결해지고 개발하기 편리해지긴 하지만 팀 프로젝트를 진행하며 그렇게 간결해지고 작동되는 로직을 파악하지 않고 무분별하게 사용하는 것을 우려하여 처음에는 자유롭게 customizing이 가능한 APIView를 사용하기로 했다. APIView로 작성된 Bulk Delete ✔️ 항목을 다중으로 삭제하기 위한 기능 개발을 위해 클라이언트 단에서 ..
2023.05.05 -
✔️ 숫자가 천, 만 단위 이상으로 커지면 한 번에 몇자리 수인지 읽기가 어렵다. 123958674 ✔️ 숫자의 자릿 수를 읽어 천자리 마다 ","를 찍어주는 로직을 넣어 Python의 함수로 만들 수 있겠지만, Python에서는 format이라는 함수가 있기 때문에 이를 이용하여 천자리 마다 ","를 삽입하여 보자. price = 123958674 print(format(price, ',d')) print(format(price, ',f')) ✔️ format() 함수의 첫 번째 인자로 ","를 삽입할 값, 두 번째 인자로는 "d" 또는 "f"를 넣어준다. format(price, ',d'): 정수형으로 format(price, ',f'): 실수형으로 ➤ format() 천단위 삽입 print(form..
[Python] format(천단위 콤마 삽입하기)✔️ 숫자가 천, 만 단위 이상으로 커지면 한 번에 몇자리 수인지 읽기가 어렵다. 123958674 ✔️ 숫자의 자릿 수를 읽어 천자리 마다 ","를 찍어주는 로직을 넣어 Python의 함수로 만들 수 있겠지만, Python에서는 format이라는 함수가 있기 때문에 이를 이용하여 천자리 마다 ","를 삽입하여 보자. price = 123958674 print(format(price, ',d')) print(format(price, ',f')) ✔️ format() 함수의 첫 번째 인자로 ","를 삽입할 값, 두 번째 인자로는 "d" 또는 "f"를 넣어준다. format(price, ',d'): 정수형으로 format(price, ',f'): 실수형으로 ➤ format() 천단위 삽입 print(form..
2023.05.04 -
게시판과 페이징을 구현하며 템플릿 태그를 사용하였다. ✔️ {% csrf_token %}: 서버와 api 통신에 필요한 크로스 사이트 요청 위조를 방지하기 위해 사용되는 태그 ✔️ {% if %}{% else %}: 조건을 이용하여 html에서 python 문법 사용 가능 ✔️ {% for item in items %}: for 루프를 이용하여 html에서 python 문법 사용 가능 🍃 순차적 출력 cycle ✔️ 게시판을 구현하면서 부트스트랩으로 디자인을 입히고, 짝수와 홀수 라인의 백그라운드 색상을 다르게 주었다. 아이디 유저이름 이메일 가입일 페이플랜 가격 {% for user in users %} {{ user.id }} {{ user.username }} {{ user.email }} {{ u..
[Django] 다양한 템플릿 태그게시판과 페이징을 구현하며 템플릿 태그를 사용하였다. ✔️ {% csrf_token %}: 서버와 api 통신에 필요한 크로스 사이트 요청 위조를 방지하기 위해 사용되는 태그 ✔️ {% if %}{% else %}: 조건을 이용하여 html에서 python 문법 사용 가능 ✔️ {% for item in items %}: for 루프를 이용하여 html에서 python 문법 사용 가능 🍃 순차적 출력 cycle ✔️ 게시판을 구현하면서 부트스트랩으로 디자인을 입히고, 짝수와 홀수 라인의 백그라운드 색상을 다르게 주었다. 아이디 유저이름 이메일 가입일 페이플랜 가격 {% for user in users %} {{ user.id }} {{ user.username }} {{ user.email }} {{ u..
2023.05.04 -
장고 게시판을 구현하기 위해 django-seed를 이용하여 임의의 데이터를 만들어보았다. 하지만 무작위 데이터를 생성하기 때문에 이번에는 코드를 작성하여 내가 원하는 데이터를 생성해보려고 한다. ➤ 둘러보기 : Django 게시판 🍃 seed를 이용하여 데이터 생성하기 1. django-seed 설치 $ pip3 install django-seed $ pip3 install psycopg2 $ pip3 freeze > requirements.txt ✔️ 먼저 데이터를 생성할 수 있게 도와주는 seed를 설치하자. 📌 무작위 데이터 생성 방법 $ python3 manage.py seed shortener --number=30 ✔️ 코드 작성 없이 seed만 사용하여 app에 작성된 모델의 데이터를 무작위..
[Django] django-seed를 이용한 데이터 만들기장고 게시판을 구현하기 위해 django-seed를 이용하여 임의의 데이터를 만들어보았다. 하지만 무작위 데이터를 생성하기 때문에 이번에는 코드를 작성하여 내가 원하는 데이터를 생성해보려고 한다. ➤ 둘러보기 : Django 게시판 🍃 seed를 이용하여 데이터 생성하기 1. django-seed 설치 $ pip3 install django-seed $ pip3 install psycopg2 $ pip3 freeze > requirements.txt ✔️ 먼저 데이터를 생성할 수 있게 도와주는 seed를 설치하자. 📌 무작위 데이터 생성 방법 $ python3 manage.py seed shortener --number=30 ✔️ 코드 작성 없이 seed만 사용하여 app에 작성된 모델의 데이터를 무작위..
2023.05.03