Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 파이썬
- 연습
- github
- git
- 도커
- Til
- 티스토리챌린지
- SQL
- 자료구조
- nginx
- 코딩테스트
- django
- 오블완
- 아티클 스터디
- Python
- flask
- 세션(Session)
- 장고
- web
- JWT
- 쿠키(cookie)
- Wil
- viewsets
- 개발공부
- Doker
- redis
- docker
- NoSQL
- ERD
- CS
Archives
- Today
- Total
SteadyDrills
장고 프로젝트(: spartamaket) - 프로필 이미지 삽입기능 & 기본값(default) 본문
240826
장고 프로젝트(: spartamaket) - 프로필 이미지 삽입기능 & 이미지 기본값(default)
오늘 구현한 기능 부분 중 가장 큰 부분은 이미지 삽입기능과 기본값 설정이다.
class CustomUserCreationForm(UserCreationForm):
image = forms.ImageField(label="Profile Image",required=False)
class Meta:
model = get_user_model()
fields = ("username", "password1", "password2", "image")
class CustomUserChangeForm(UserChangeForm):
username = forms.CharField()
image = forms.ImageField(label="Profile Image",required=False)
class Meta:
model = User
fields = ('username', 'image',)
구조를 생각 못하고 우선적으로 폼에 이미지 삽입 필드만을 만들었다.
그러자 이미지를 넣고 회원가입을 해도 이미지를 삽입하는 것은 필수라며, 다시 기입하라고 했다...
3번을 시도해도 안되자 답답하지만 볼 수 있는 건 VScode의 DB 밖에 없다 보니 더 자세히 보게 되었다. 자세히 보다 보니 이미지가 저장이 안 돼있는 걸 보고 코드 전체를 다시 볼 생각을 했다. DB에 저장은 결국 모델이 하는 일이고 이미지라는 컬럼을 만들기 위해 오버라이딩을 하면 된다라는 결론이 나왔다.
class User(AbstractUser):
image = models.ImageField(default='user.png', upload_to='images/users', blank=True)
following = models.ManyToManyField(
"self", symmetrical=False, related_name="followers"
그와 동시에 과제의 필수 기능 중 하나인 기본값을 설정했다. 이렇게만 하면 바로바로 잘 나올 줄 알았으나 또한 가지를 빼먹은 것은 이미지를 전송하는 코드를 추가하지 않았다는 것이다. ;;
require_http_methods(['GET', 'POST'])
def signup(request):
if request.method == 'POST':
form = CustomUserCreationForm(request.POST, request.FILES) #repquest.FILES를 빼먹다니....
if form.is_valid():
user = form.save()
auth_login(request, user)
return redirect('accounts:login')
else:
form = CustomUserCreationForm()
context = {'form': form}
return render(request, 'accounts/signup.html', context)
코드를 보며 '내가 기입한 요청을 받아라' 하고 보냈지만 '내가 올린 이미지'에 대한 요청을.... 빼먹었다.
하지만 결국 찾아냈고 그 덕에 장고의 메커니즘이나 로직을 더 잘 이해하게 된 거 같아 기분이 좋다.
많이 부딪혀보니 잘 이해가지 않던 것도 이해하게 되어 오류를 대하는 방식이 '새로운 문제를 푸는', '장고의 기능을 이해'하게 되는 계기가 되어 좋았다.
'웹개발' 카테고리의 다른 글
Django(장고)- 장고 ORM 중 fillter와 Q 객체( 'Q'object) (0) | 2024.08.28 |
---|---|
장고 프로젝트(: spartamaket) - 검색기능 구현 (0) | 2024.08.27 |
장고 프로젝트(: spartamaket) - 목록 정렬기능 구현 (0) | 2024.08.23 |
웹 개발 - 웹 페이지의 구성 요소 (0) | 2024.08.19 |
[TIL]웹 구조 기본 (0) | 2024.08.13 |