Share
Sign In
TIL 웹개발
TIL 웹개발 - Django에서 커스텀 폼 사용하기
서경태
👍
Django에서 제공되는 Form을 커스텀해서 사용하는 방법에 대해 알아보자.
회원 정보를 수정하는 페이지를 만들때, 간편하게 UserChangeForm을 사용할 수 있다.
하지만 이 폼에는 아래 이미지처럼 일반 회원이 굳이 접하지 않아도 되는 필드들이 나온다.
그래서 커스텀 폼을 사용해 필요한 내용만 나오도록 조정한다.
from django.contrib.auth.forms import UserChangeForm class CustomUserChangeForm(UserChangeForm): class Meta: model = get_user_model() fields = [ "first_name", "last_name", "email", ]
1.
먼저 forms.py에서 쟝고에서 제공하는 UserChangeForm을 임포트한다.
2.
CustomUserChangeForm을 만들고 ()안에 UserChangeForm을 넣어 상속을 받는다.
3.
class Meta:
model = get_user_model()
은 모델폼을 만든 것이다.
4.
fields를 리스트로 만들어 안에 필요한 내용을 채운다. 코드처럼 이름과 이메일 주소만 기입하도록 설정했다.
5.
처음 이미지와 달리 깔끔하게 필요한 정보만 기입하도록 수정했다.
Subscribe to 'kyugntae-ai'
Welcome to 'kyugntae-ai'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to 'kyugntae-ai'!
Subscribe
👍
Other posts in 'TIL 웹개발'See all
서경태
TIL 웹개발 - Django의 cleaned_data 활용
모델 폼을을 사용해 값을 받은 후 그 값을 다시 반환하거나 사용할때 cleaned_data를 사용할 수 있다. 팀프로젝트에서 해시태그 기능을 만들때 cleaned_data를 사용해 중계테이블의 값을 가져왔다. 해시태그와 아티클의 모델을 만들고 아티클에 해시태그를 M:N 필드로 가져와 article_hashtag 중계테이블을 만든 상태다. 모델폼은 만드는데 hashtags를 상속받지 않고 오버라이딩한다. 이유는, 상속받아 폼에 적용하면 hashtag테이블에 생성된 것 중 선택하는 양식으로 나오기 때문이다. 보통 해시태그는 선택이 아니라 직접 작성하기 때문에 위 코드처럼 오버라이딩해서 Textfield로 지정한다. views.py 에서는 모델폼을 사용해 값을 입력받는 로직이다. 하지만 form이 만들어지고 save를 했다고 해도 article_hashtags 중계 테이블에는 데이터가 저장되지 않는다. 이때 form의 cleaned_data 요소를 사용해 hashtag값을 반환해 따로 저장한다. form.is_valid()를 통해 유효성 검사를 통과화면 cleaned_data 딕셔너리가 생성되고 데이터가 cleaned_data 딕셔너리에 추가된다. 각 필드의 이름이 딕셔너리의 키(key)가 되고 입력한 내용이 값(value)로 저장된다. 만약 내가 아티클을 아래와 같이 작성하고, 타이틀: 아이폰 신상 공개 내용: 아이폰이 새로나왔어요! 해시태그: 아이폰 if form.is_valid()를 지나 해시태그 내용응 반환하고 다시 해시태그 테이블에서 그 값으로 중계테이블에 추가한다.
서경태
TIL 웹개발 - Git 활용
git init 현재 디렉토리를 깃 저장소로 초기화한다. .git 폴더가 생성됨으로써, 해당 디렉토리가 깃으로 관리되는 프로젝트가 된다. git status 현재 작업 디렉토리의 파일 상태를 확인할 수 있다. 어떤 파일이 수정되었는지, 어떤 파일이 스테이징되지 않았는지 등을 보여준다. git add <파일명> 특정 파일을 스테이징 영역에 추가한다. 예를 들어, git add example.txt를 입력하면 example.txt 파일이 커밋 대상에 포함된다. git add . 현재 디렉토리의 모든 변경 파일을 스테이징 영역에 추가한다. 자주 쓰이지만, 정확히 어떤 파일이 추가되는지 항상 확인하는 게 좋다. git commit -m "커밋 메시지" 스테이징된 파일들을 커밋한다. "커밋 메시지" 부분에 해당 커밋에 대한 설명을 적는다. 이 메시지는 프로젝트 히스토리를 이해하는 데 중요하다. git log 커밋 히스토리를 조회할 수 있다. 각 커밋의 해시, 작성자, 날짜, 메시지 등을 확인 가능하다. git branch 현재 브랜치를 확인하거나, 브랜치를 목록으로 보여준다. 새로운 브랜치를 생성하거나 삭제할 때는 -d 옵션 등을 추가로 사용한다. git branch <브랜치명> 새로운 브랜치를 생성한다. git branch feature를 입력하면 feature라는 이름의 새로운 브랜치가 만들어진다. git checkout <브랜치명> 다른 브랜치로 전환한다. 예를 들어, git checkout develop을 입력하면 develop 브랜치로 이동한다. git merge <브랜치명> 특정 브랜치를 현재 브랜치로 병합한다. 주로 새로운 기능을 개발한 브랜치를 main 브랜치에 병합할 때 사용한다. git remote add origin <원격 저장소 URL> 로컬 저장소와 원격 저장소를 연결한다. 보통 origin이라는 이름으로 많이 쓰인다. git push origin <브랜치명> 로컬 브랜치의 커밋을 원격 저장소에 푸시한다. 보통 main이나 develop 같은 브랜치를 푸시한다. git pull 원격 저장소에서 최신 변경 사항을 가져오고, 현재 브랜치에 병합한다. 푸시하기 전에 자주 사용하게 된다. git clone <원격 저장소 URL> 원격 저장소를 로컬에 복제한다. 원격에 있는 프로젝트를 그대로 내 컴퓨터로 가져올 수 있다.
서경태
TIL 웹개발 - Django form, model 등등 찾아보기
Django를 배우다보니 어느순간 기억하는데 한계가 오기 시작한다. 그 이유는 import하는 함수, 데코레이터, 모델, 폼 등등 너무 복잡하기 때문인데... 이참에 정리해보고 여기서 한번에 확인하자.. (자동 완성은 from 머시기도 다 찾아주나...) Accounts 관련 로그인 / 로그아웃 기능 auth_login(request, user)를 사용한다. user가 없는 경우 request.user를 사용한다. 로그아웃할때 자동으로 세션를 삭제해준다. 로그인 폼 현재 프로젝트에서 사용되는 사용자 모델 가져오는 기능 커스텀 사용자 모델을 사용하는 경우, settings.py에 AUTH_USER_MODEL을 설정해야한다. AUTH_USER_MODEL를 설정하지 않으면 기본 사용자 모델을 사용한다. 회원가입 / 회원 정보 수정 폼 비밀번호 변경 폼 데코레이터