일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- docker
- merge
- NeXT
- Vue
- crud
- 중급파이썬
- 튜플
- 카톡
- dict
- flask
- EC2
- pandas
- 파이썬
- git
- node
- SSA
- RDS
- lambda
- react
- AWS
- SAA
- 채팅
- Class
- wetube
- S3
- socket io
- Props
- TypeScript
- async
- MongoDB
- Today
- Total
초보 개발자
django user-editprofile with UpdateView 본문
user의 edit page를 만들어보자
이번에는 UpdateView를 사용해보려고한다.
기본적으로 UpdateView는 pk를 인자로 받는다. 그리고 지정한 모델의 pk에 해당하는 data를 html에 form으로 보내준다.
하지만 edit profile을 잘 생각해보면, 내가 남의 profile은 수정을 할 수가 없다. 오직 나의 profile만 수정을 할 수가 있다.
따라서 pk를 인자로 주지 않으려고한다. 그 대신 get_object라는 메서드를 만들어 줌으로써 해결이 가능하다.
return 값으로 현재의 유저를 보내주면 된다. 그리고 form에서 바꿀 내용을 fields안에 넣어주면 html안에 fields에 적어놓은 내용들이 다 들어있다. 이렇게 반복문을 돌려주면 된다.
기본적으로 template_name을 적어주지 않으면 user_update.html이라는 파일을 찾지만 이렇게 따로 지정을 해주면 우리가 사용하고 싶은 이름의 파일명을 사용할 수 있다.
이게 잘 되나 싶어 get_object를 빼고 url에 <int:pk>를 넣어보았다.
이랬더니 user/update/100으로 가면 다른 사람의 edit-profile로 가졌고 또 수정도 잘 되는 것을 확인할 수 있었다.
우리는 따로 pk를 주지 않고 object를 현재 접속해 있는 유저로 정해주고, 또 수정할 필드또한 골라준 것이다.
그리고 신기한게.. update 버튼을 누르면 알아서 detailView페이지로 넘어간다..?
즉 update버튼을 누르면 알아서 다시 profile페이지로 넘어간다. 따로 설정은 안해둔거같은데..
버튼을 누르면 알아서 get_absolute_url로 보내준다고한다. 이전에 User model에 get_absoulte_url을 profile로 가도록 설정해두었었다.
따라서 알아서 아래의 url로 넘어갔던 것이다.
'Python > airbnb 클론' 카테고리의 다른 글
django class mixins (0) | 2022.03.15 |
---|---|
django passwordchange with Form View (0) | 2022.03.15 |
django userProfile with DetailVeiw (0) | 2022.03.15 |
django message (0) | 2022.03.14 |
django login, signup page (0) | 2022.03.13 |