목록분류 전체보기 (161)
개발 기록
simple-jwt에 블랙리스트라는 기능이 있어서 사용해보려고 한다 사용 이유 - 로그 아웃시 로컬 저장소에 저장한 토큰을 삭제하고 서버에서 블랙리스트에 넣어 무효화 - localStorage에서 액세스 토큰과 새로 고침 토큰을 모두 제거할 수 있더라도 refresh_token이 도난당했다면 다른 클라이언트가 해당 토큰을 무기한 계속 사용할 수 있다. 이를 방지하기 위해 클라이언트가 현재 refresh_token 또는 현재 사용자에게 할당된 모든 refresh_token을 무효화 가능 공식문서 https://django-rest-framework-simplejwt.readthedocs.io/en/latest/blacklist_app.html Blacklist app — Simple JWT 5.1.0.po..
1. 회원가입 accounts/models.py - 가입시 이메일과 비밀번호만 입력 from django.contrib.auth.base_user import AbstractBaseUser from django.contrib.auth.models import PermissionsMixin from django.db import models from accounts.managers import UserManager class User(AbstractBaseUser,PermissionsMixin): email = models.EmailField(verbose_name='email id', db_index=True, null=False, blank=False, unique=True, help_text='EMA..
1. 'User' object has no attribute 'has_module_perms' admin 계정을 만들고 로그인 했더니 뜬 에러 검색해보니 커스텀 유저를 사용해서 그런 것 같다 PermissionsMixin를 추가해줌 문서를 참고- PermissionsMixin는 사용자 모델의 클래스 계층에 포함할 수 있는 추상 모델로, Django의 권한 모델을 지원하는 데 필요한 모든 메서드와 데이터베이스 필드를 제공한다고 한다 class User(AbstractBaseUser,PermissionsMixin): id = models.AutoField(primary_key=True) https://docs.djangoproject.com/en/4.0/topics/auth/customizing/#custo..
from django.contrib.auth.models import AbstractUser class User(AbstractUser): pass AbstractUser 로 커스텀해서 사용중이였다 이거말고 다른 곳에서 유저 사용하는게 없는데 오류가 나서 이상했다 뒤져보니 restframework 사용하려고 예문 붙여넣은 urls.py에서 user를 잘 못 임포트해오고 있었다. from django.urls import path, include from django.contrib.auth.models import User from rest_framework import routers, serializers, viewsets # Serializers define the API representation. ..
출처 https://django-taggit.readthedocs.io/en/latest/getting_started.html Getting Started — django-taggit 1.3.0 documentation Add "taggit" to your project’s INSTALLED_APPS setting. Run ./manage.py migrate. Note If you want django-taggit to be CASE-INSENSITIVE when looking up existing tags, you’ll have to set TAGGIT_CASE_INSENSITIVE (in settings.py or wherever you have your Dj django-taggit.readthed..
MVC & MTV Model View Control, Template(Django) Django 동작 과정 Browser -> WEB SERVER -> WSGI(wsgi.py) ->URL.RESOLUTION(urls.py) -> VIEW(view.py) -> TEMPLATE(ex.html) -> WSGI -> WEB SERVER MODEL(models.py) MANAGERS DB FORM(forms.py) 프로젝트와 앱 -프로젝트 내부에 다수의 app 생성 settings.py - 프로젝트 환경 설정 파일 DEBUG : 디버그 모두 설정 INSTALLED_APPS : pip로 설치한 앱 또는 본인이 만든 app 추가 MIDDELWARE_CLASSES : request와 response 사이의 주요 기능 ..
정점의 개수가 클때 인접행렬로 하기에는 비효율적 인접리스트 정점 개수만큼 리스트 객체 생성 간선 정보가 들어올때 해당 정점 리스트에 연결된 번호 추가 경로 탐색시 해당 정점 리스트의 사이즈만큼만 돌면 됨 연결된 선인지 확인할 필요가 없음(방문 했는지만 체크) 예시 ArrayList graph = new ArrayList(); int n = 5; //점 개수 int m = 9; //간선 개수 //점 개수만큼 리스트 생성 (0번째는 사용 x) for (int i = 0; i
영속성 컨텍스트 -엔티티를 영구 저장하는 환경 엔티티의 생명주기 -비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 -영속(managed) : 영속성 컨텍스트에 관리되는 상태 -준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 -삭제(removed) : 삭제된 상태 엔티티 조회, 1차 캐시 em.persist(member); 영속상태가 되고 1차 캐시에 저장됨 ( 영속성 컨텍스트 안에 1차 캐시 존재 ) --> 데이터 조회시 db보다 먼저 1차 캐시에서 데이터를 찾음 --> 1차 캐시에 없으면 db에서 조회후 1차 캐시에도 저장하고 그것을 반환 영속 엔티티의 동일성 보장 -1차 캐시로 반복 가능한 읽기 등급의 트랜잭션 격리 수준을 데이터베이스가 ..