Django

FrameWork/Django

settings.py 분리하여 관리하기

Settings.py을 분리한다는 것이 무슨 말이죠? 장고를 사용하다보면 기능 구현을 위해 여러 라이브러리나 모듈, 미들웨어 등을 추가하면서 몸집을 키워나가게 되는데 이 과정에서 settings.py 파일의 크기가 커진 나머지 내가 어떤 것을 추가하였는지 대해 찾기도 어려울 뿐더러, 배포을 할때에는 사용자에게 보여주면 안되는 세부정보들을 제공하지 않기 위해 개발용 세팅과, 배포용 세팅을 따로 둘 필요성이 있습니다. 따라서 이런 이유로 장고 개발자들은 본래 프로젝트를 시작하면 만들어지는 settings.py을 settings 라는 폴더를 만들고 그 안에 common.py, prod.py 등으로 쪼개서 관리하시는 식으로 프로젝트를 관리하고 있습니다. 한문장으로 설명하자면 : 그냥 프로젝트에 사용되는 설정 코..

FrameWork/Django

dumpdata와 loaddata을 통해 DB데이터 추출, 적재하기

이걸 왜 사용하나요? 장고에서 DB을 사용하다 보면, 성능이나 다른 이슈로 인해 다른 DB에 데이터를 옮겨야 하는 상황이 발생하기도 합니다. 이때 dumpdata와 loaddata을 활용한다면 쉽게 DB에서 데이터를 추출하고 적재할 수 있습니다. dumpdata : DB 데이터 추출 dumpdata 명령어를 실행한 뒤 출력되는 데이터를 파일로 추출하는 방식입니다. 해당 명령을 실행하면 dumpdata로 반환되는 값을 data.json 이름의 파일로 보내면서 참고로 data.json 말고 다른 이름으로 변경하여 사용이 가능합니다. python manage.py dumpdata > data.json 특정 장고 앱의 데이터만 저장한다면 dumpdata 뒤에 앱 이름을 입력합니다. python manage.py..

FrameWork/Django

장고(Django) 프레임워크 소개와 프로젝트 생성하기

파이썬은 빅데이터 영역뿐만 아니라 GUI, Web 분야에서도 쉬운 사용법과 직관적인 문법 덕분에 많은 사용자들이 즐겨 사용하고 있는 언어 중 하나이다. 그중 Web 영역에서 파이썬을 사용하려면 프레임워크를 이용하여 프로젝트를 진행하게 된다면 쉽게 웹사이트를 구축하고 운영할 수 있다. 파이썬으로 활용할 수 있는 프레임워크는 Django, Flask, Fastapi.. 등등 많은 종류가 있지만 그중에서도 어느 정도 완성적으로 기능들을 제공하는 Django 프레임워크에 대해 이야기해보고자 한다. 프레임워크 일단 장고에 대해 알아보기 전에 프레임워크가 무엇인지에 대해서 살펴보자. 프레임워크란 "어떠한 목적을 달성하기 위해 복잡하게 적혀 있는 문제를 해결하기 위한 구조"라고 설명하곤 한다. 그리곤 항상 뜨겁게 나..

Cloud/Docker

docker compose을 이용하여 django, postgres 연결하기

일단 해당 작업을 하기 전에 현재 나의 폴더 구성을 보여주자면 아래와 같이 되어 있다. backend 폴더는 django 프로젝트로 되어 있고 이를 이미지로 빌드하기 위해서 backend안에 Dockerfile 생성하여 만들었다. 🐳 Dockerfile FROM python:3.9 WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [ "python", "manage.py", "runserver", "0.0.0.0:8000" ] 📄 requirements.txt ... ... ... psycopg2 여기서 psycopg2 라이브러리는 python에서 postgreSQL을 사용..

FrameWork/Django

[Django] User Model 확장하기

📚 django UserModel Django 에서는 표준 User Model을 제공하고 있다. 해당 User Model은 django.contrib.auth.models.User에 다음과 같이 정의 되어 있다. class User(AbstractUser): class Meta(AbstractUser.Meta): swappable = 'AUTH_USER_MODEL' 아래는 User 모델에서 정의되어 있는 칼럼들이다. username = models.CharField() first_name = models.CharField() last_name = models.CharField() email = models.EmailField() is_staff = models.BooleanField() is_active..

FrameWork/Django

django-environ을 이용하여 환경변수 관리하기

django-environ 대게 django을 하다보면, 남들에게 보여주면 안되는 API_KEY 값들이나 다른 중요한 값들이 존재하기 마련이다. 따라서 이런 값들을 따로 관리해야하는 필요성을 알게되는데 이를 도와주는것이 djago-environ이다. 일단 django-envirion을 설치한다. pip install django-environ 그 다음 프로젝트 안에 .env 라는 파일을 생성 한 뒤, 파일안에 변수와 값을 기입한뒤, settings.py 에서 사용한다. 📕 .env SECRET_KEY='django-insecure-n&(433#pnjvih&mmil99u666&5cm*d0_o$@*cj41934u=$w7*q' DEBUG=True 🔖.env 파일에 값을 넣을때 변수와 값 사이에 뛰어쓰기가 존재..

FrameWork/Django

ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'accounts.account', but app 'accounts' doesn't provide model ' 에러 해결

상황 django에서 유저 모델을 만들어서 migrate하는 도중에 해당 오류가 발생하였다. 해결 https://stackoverflow.com/questions/50324561/valueerror-the-field-admin-logentry-user-was-declared-with-a-lazy-reference ValueError: The field admin.LogEntry.user was declared with a lazy reference I'm developing a new django project and stuck with migration. I would like to make a UserModel, and in order to do that, I did two things so far...

FrameWork/Django

mark_safe을 통해 Admin 페이지에서 이미지를 표현하는 방법

Admin에서 Img을 표현하는 방법 Django admin에서 list_display을 통해 해당 model의 img을 표현하고 싶다면 다음과 같이 작성한다. from django.contrib import admin from .models import Post from django.utils.safestring import mark_safe @admin.register(Post) class PostAdmin(admin.ModelAdmin): list_display = ['pk', 'photo_view','message'] def photo_view(self, obj): return mark_safe(f"") django는 기본적으로 autoscape (html 파일이 아닌 외부로부터의 코드를 모두 e..

FrameWork/Django

[Django] 관계를 표현하는 Model Field

📚 DBMS에서의 관계 📒 1:N에서의 관계 -> models.ForeignKey로 표현 📒 1:1에서의 관계 -> models.OneToOneField로 표현 📒 M:N에서의 관계 -> models.ManyToManyField로 표현 📚 ForeignKey 1:N 관계에서 N측에 명시합니다. models.ForeignKey(to, on_delete) 📒 to : 대상 모델 클래스를 직접 지정하거나, 클래스명을 문자열로 지정합니다. 자기 참조를 할때는 self로 지정합니다. 📒 on_delete : Record 삭제 시 Rule을 의미한다. 아래와 같은 값들을 사용 할 수 있다. CASCADE FK로 참조하는 다른 모델의 Record도 삭제 (장고 1.X에서의 디폴트값) PROTECT ProtectedE..

JHeaon
'Django' 태그의 글 목록