Django 10

[django] django template에서 settings.py variable불러오는 방법

How to use settings.py variables in django template ? >>> Use custom_tag!개발을 하다 보면 로컬환경, 개발환경, 배포환경 등 여러가지 환경에서 테스트해야하는 상황이 생긴다.테스트 할때마다 각 환경에 맞는 환경설정 값을 바꾸는 건 굉장히 비효율적인 작업이고 작업 집중력도 떨어뜨리며 능률도 떨어지게 된다. 그래서 나 같은 경우는 secrets.json에 환경변수값들을 키값과 함께 저장해놓고 각 환경에서 secrets.json파일만 바꾸는 식으로 개발을 진행한다. 뭐가 되었든 각설하고 django template에서 환경에 따라 값을 다르게 넘겨줘야 하는 상황이 생기는데 이 때 settings.py에서 정의한 변수를 가져오게 된다면 문제가 간단하게 해결..

[django] ImageField upload_to 동적 업로드(함수 사용)

장고 imagefield에서 image데이터를 업로드할 때 dynamic upload가 가능하다. 장고에서 사용자가 사용하는 폴더가 media라고 보통 정해놓는데 이 media폴더에 이미지를 업로드할 때 이름을 따로 지정해주는 것을 dynamic upload라고 한다. ImageField의 upload_to옵션은 이미지가 저장되는 경로를 넣어주는 옵션인데 여기에 함수를 만들어서 동적 업로드가 가능하게 할 수 있다. # models.py def image_upload_to(instance, filename): ext = filename.split('.')[-1] # 이미지 파일 형식 따오기 return os.path.join(instance.UPLOAD_PATH, "%s.%s" % (uuid.uuid4()..

[django] debug_toolbar 세팅

django debug 툴바 설치 및 세팅 방법입니다. 1. install Package pip install django-debug-toolbar pip install -e git+https://github.com/jazzband/django-debug-toolbar.git#egg=django-debug-toolbar 둘중 한 방법을 선택해서 사용하고 있는 가상환경에 django-debug-toolbar패키지를 설치해준다. 2. Check for Prerequisites 이 설정은 startproject를 할 때 이미 세팅이 되는 부분이라서 웬만하면 따로 손볼일은 없고, 아래 코드처럼 되어잇는지 확인만 하면 된다. # 프로젝트 디랙토리/settings.py INSTALLED_APPS = [ # ... ..

[django] Related Field got invalid lookup: icontains 오류

search_fields 옵션에 원하는 필드들을 넣어서 admin페이지에서 검색 가능하도록 만들려고 하는 중에 "Related Field got invalid lookup: icontains" 이런 오류에 맞딱뜨렸다. 아래 코드가 admin.py에서 오류가 났었던 코드이다. models.py를 보면 title, content 필드는 Post테이블 자체필드이지만 username 은 User라는 테이블에서 외래키로 연결시켜놓은 상태이다. 즉 username필드는 User테이블과 연결시켜주는 고유값일 뿐이다. 따라서 django는 User테이블에서 어떤 필드를 가지고 검색해야 하는지 모르는 것이다. 그래서 에러가 났을 뿐... # models.py class Post(BaseModel): username = ..

[django] User모델 커스터마이징 할 때 오류

AbstractUser를 사용해서 User모델을 커스터마이징 하고 나서 마이그레이션 할 때 아래와 같은 오류가 났을 때 해결방법 장고에서 만들어 둔 User 모델이 아니라 내가 커스텀해서 만든 User모델을 사용하고자 하는 것이므로 장고한테도 이 사실을 알려줘야 한다. 프로젝트 디렉토리의 settings.py에 AUTH_USER_MODEL 환경 변수를 '[앱이름].[모델이름]'이런식으로 지정해주면 된다. 예시) AUTH_USER_MODEL = 'users.User'

[django] ImageField Form 이미지 업로드하기.

django Form에서 이미지를 업로드해서 DB에 저장하는 기능을 구현하는 방법이다. 이미지 파일이 form에서 view로 넘어가지도 않는 문제, view에서 조회하는 문제들을 해결하였다. 1. media폴더 경로 설정 프로젝트 폴더 settings.py 마지막줄에 MEDIA_URL, MEDIA_ROOT 추가 # setting.py # ... 이외의 기본 세팅들 MEDIA_ROOT = BASE_DIR/'media' MEDIA_URL = '/media/' 프로젝트 폴더 urls.py에 urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 추가 # urls.py from django.contrib import admin f..

[django] 프로젝트 배포 시 sqlite3 버전 오류

django프로젝트를 만든 후 aws나 gcp에 배포하려고 할 때 sqlite3의 버전 오류가 나는 경우가 많다. 이때 linux기반 OS에서 sqlite3를 쉽게 설치하는 방법이다. linux기반 지식이나 명령어들을 잘 몰라서 많이 해맸는데 아래의 명령어로 쉽게 해결할 수 있었다. 오류 내용 : django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17). sqlite3.9버전 이상을 설치해주어야 한다. koipkgs에 sqlite3 버전 별 설치파일들이 있고 이 파일들을 찾아서 다운로드 후 설치해주면 된다. 명령어 wget https://kojipkgs.fedoraproject.org//pack..

[django] django.db.utils.OperationalError: table already exist

에러 : table already exist 장고 migration시 table already exist 에러를 해결하는 과정에 대한 블로그입니다. 원인 아래와 같이 같은 이름의 테이블이 이미 존재하기 때문에 python manage.py migrate 할 수 없다는 에러메세지였다. 이 문제를 해결하려면 이미 존재하고 있는 테이블을 지우거나 수정해야 한다. 해결 python manage.py migrate --fake 을 입력하여 테이블이 없는 것으로 간주하고 새로 테이블을 만드는 명령어를 사용하면 됨.

[django] no such table: auth_user

python manage.py createsuperuser로 아이디와 패스워드를 만들려고 하는데 이런 오류가 뜬다. 구글링을 통해 찾아보니 말 그대로 DB에 테이블이 없어서 나타나는 문제점이라고 한다. 1. python manage.py makemigrations 2. python manage.py migrate 이 두가지 명령어를 순서대로 실행시켜서 migrate를 해주고 나서 다시 createsuperuser하면 된다. 장고 프로젝트를 새로 시작했을 때 기본적으로 세팅이 되어있는 모델들이 있는데 이 모델들도 맨 처음에는 migration을 해주어야한다. python manage.py makemigrations명령어는 모델에 변화가 있거나 모델을 새로 생성했을 경우 변경사항을 업데이트해주는 명령어다. ..

[django] 명령어 정리

django 명령어 정리 장고는 기본적으로 아래의 장고어드민(django-admin)이라는 명령어를 통해서 프로젝트와 앱을 실행시킬 수 있다. 프로젝트 생성 django-admin startproject [프로젝트 이름] 앱 생성 django-admin startapp [앱 이름] 서버시작 python manage.py runserver [포트번호] 장고로 프로젝트를 시작하면 manage.py라는 파일이 자동으로 생성되는데 이 파일이 있는 디렉토리에서 runserver와 포트번호를 붙여서 실행시키면 로컬 서버에서 장고프로젝트를 실행시킬 수 있게 된다! 아니 벌써 장고라는 틀을 가지고 일단 웹을 하나 찍어만들어보긴 한 셈이다. 짝짝짝!!! 이 외에도 django-admin을 치면 사용할 수 있는 명령어들이..