Rad Blog

Archive

Django - 사용자 정의 템플릿이 PasswordChangeForm의 password_change_form.html에 의해 렌더링 되지 않는 이유와 문제 해결

2021-06-28 Django xfrnk2
문제 비밀번호 변경 기능을 추가하고 싶었다. 어떻게? Django에서 기본 제공하는 PasswordChangeForm, password_change_form.html을 사용 < click 직접 작성한 템플릿에 의해 비밀번호 변경 페이지가 렌더링 되게 하고싶었는데, 원하던 템플릿이 아니라, Django Administration에서 제공하는 페이지가 렌더링 되었다. 내가 원했던 화면은 이게 아닌데…? 관련 실마리 Django 공식 문서의 Installed_apps settings: < click When several applications provide different versions of the same resource (template, static file, management command, translation), the application listed first in INSTALLED_APPS has precedence. Continue reading

Django - takes 1 positional argument but 2 were given 해결

2021-06-26 Django xfrnk2
Error TypeError at /photo/ _add_thumb() takes 1 positional argument but 2 were given blog/photo/fields.py의 class ThumbnailImageFieldFile(ImageFieldFile): 내부 함수 def _add_thumb(s): def _add_thumb(s):' » def _add_thumb(self, s):으로 변경. 에러 발생의 이유 That message has umpteen causes; the specific reason here is that all instance methods expect a first arg which by custom we call self. So declaring def method(arg): is wrong for a method, it should be def method(self, arg):. When the method dispatch tries to call method(arg): and match up two parameters self, arg against it, you get that error. Continue reading

Django - NoReverseMatch 에러, Reverse not found 해결방법

2021-06-04 Django xfrnk2
Error NoReverseMatch at /polls/ Reverse for ‘detail’ not found. ‘detail’ is not a valid view function or pattern name. \polls/templates/polls <li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li> 'detail' » 'polls:detail'으로 변경. <li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li> polls 앱의 urls.py는 settings.py과 같은 레벨에 위치한 urls.py 파일의 urlpatterns에 포함되어 있기 때문이다. urlpatterns = [ ... path('', include('polls.url', name='polls') ]

Django SECRET_KEY 분리방법

2020-10-02 Django xfrnk2
방법은 두 종류가 있는데, 환경 변수로 저장하거나, 파일에 따로 저장하는 방법이다. 환경 변수로 저장시 아파치 등 웹 서버를 사용하는 경우 저장되지 않을 수 있으므로 후자의 방법을 선택했다. 임의의 원하는 공간에 secrets.json 파일을 작성 한 뒤, 아래와 같이 입력하고 저장한다. 딕셔너리 내에서 콤마는 후술(가장 뒤에 덧붙이지)하지 않는다. secrets.json { "SECRET_KEY": "실제 SECRET_KEY" } 그 다음 setting.py를 아래와 같이 변경한다. settings.py import os, json from django.core.exceptions import ImproperlyConfigured secret_file = os.path.join(BASE_DIR, 'config', 'secrets. Continue reading

Django - Queryset의 정렬 및 범위조건

2020-05-06 Django xfrnk2
이진석 선생님의 리액트와 함께 장고 시작하기 수강중 정리한 글입니다. 정렬 조건 추가 일관된 순서를 보장받기 위해 정렬 조건을 추가 DB에서 다수 필드에 대한 정렬을 지원하나 가급적 단일 필드로 하는것이 성능에 이익 시간순/역순 정렬이 필요할때는 id필드를 활용 정렬 조건 지정 방법 1. (추천) 모델 클래스의 Meta 속성으로 ordering 설정 : list로 지정 2. 모든 queryset에 order_by(…)에 지정 (주의) queryset코드에서 직접 order_by를 지정하면, Meta>ordering 설정값이 무시된다 django-extensions 커스텀 확장 기능 제공 라이브러리 Management Command, additional database fields, admin extensions 등을 지원 > python manage. Continue reading

Django - Migration을 통한 database 스키마 관리

2020-05-05 Django xfrnk2
이진석 선생님의 리액트와 함께 장고 시작하기 수강중 정리한 글입니다. Migrations 모델의 변경내역을 “데이터베이스 스키마"로 반영시키는 효율적인 방법 제공 관련 명령: 마이그레이션 파일 생성 > python manage.py makemigrations <앱이름> 지정 데이터베이스에 마이그레이션 적용 > python manage.py migrate <앱이름> 마이그레이션 적용 현황 출력 > python manage.py showmigrations <앱이름> 지정 마이그레이션의 SQL 내역 출력 > python manage.py sqlmigrate <앱이름> <Migration 이름> Migration File 기능 모델의 변경내역을 누적 테이블 생성/삭제, 필드 추가/삭제 등 데이터베이스에 어떤 변화를 가하는 Operation들을 나열 Custom Python/SQL Operation (data migration 등) makemigrations 명령에 의해 모델로부터 자동 생성 모델 참조 없이 빈 Migration File을 만들어서 직접 채워 넣는 것도 가능 주의할 점 같은 Migration 파일이라도 DB 종류에 따라 다른 SQL이 생성됨 모든 데이터 베이스 엔진들이 같은 기능을 제공하지는 않음 적용된 마이그레이션 파일은 절대로 삭제해서는 안됨 의도에 맞게 Migration 파일이 생성되었는지 확인하는 것이 무엇보다 중요 Continue reading

Django - 관계를 표현하는 Model Field - OneToOneField

2020-05-04 Django xfrnk2
이진석 선생님의 리액트와 함께 장고 시작하기 수강중 정리한 글입니다. OneToOneField 1 : 1 관계에서 어느 쪽이라도 가능 User:Profile ForeignKey(unique_True)와 유사하지만, reverse 차이 User:Profile를 ForeignKey로 지정한다면 -> profile.user_set.first() -> user User:Profile를 OneToOneField로 지정한다면 -> profile.user -> user OneToOneField(to, on_delete) #django/contrib/auth/models.py class User(abstractBaseUser): ... # accounts/models.py class Profile(models.Model): author = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) https://docs.djangoproject.com/en/3.0/ref/models/fields/#onetoonefield OneToOneField에서의 related_name reverse 접근 시의 속성명 : 디폴트 -> 모델명소문자 accounts/models.py class Profile(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) phone = models. Continue reading
Older posts