(python manage.py makemigration,
python manage.py migrate 를 통해 연동시켜준다.)
1) view.py에 구현하기
(profileapp의 view.py 에 새로운 Profile에대해서 create를 담당하는 view를 구현한 모습, form_class로서 전에 foms.py에 만들어서 구현 한 form을 가져와서 쓰고 있다. 나머지는 이전과 비슷하다.)
2) create.html 디렉토리 만들기
(예전 accountapp의 템플릿과 같이, profileapp의 하위에 template 디렉토리 생성후 다시 그 하위에 profileapp 디렉토리를 생성, 그 폴더에 create.html을 생성하여 준다.)
3) accountapp의 create.html과 동일하게 가져왔다.
(form에서 요청을 보낼 url이 profileapp:create로 바뀐것과 이름이 바뀐것 말고는 변화가 없다. 문제가 아예 없는 것은 아니다. 나중에 언제든지 바꿀 수 있는 코드이다.)
4) urls.py에 url 설정하기
(profileapp/url.py에 구현하여 create/의 경로를 지정)
5) 실행 결과
6) 프로필 생성 페이지로 갈 수 있는 링크 구현하기 (Account의 detail.html에서 구현)
=> 전에 이야기 했던 상세 페이지에서 아이디가 노출되는 문제를 해겨해보자
(detail.html의 일부를 수정한 모습 if else 문을 이용하여 target_user의 닉네임이 생성되어 있으면 그것을 보여주고, 아니면
닉네임을 만들 수 있는 곳의 링크를 보여주는 역할을 하는 코드이다.)
(닉네임이 설정되어 있지 않으므로 Create Profile 링크가 생성되는 것을 볼 수 있다.)
(링크를 누르면 위와 같이 잘 이동한다.)
7) 직접 프로필 만들어 보기
(위와 같이 입력후 제출을 누르면)
(위와같은 This Field is required. 가 뜨며 오류 발생 !!
파일을 넣었는데, 파일을 넣으라고 나오는 경우이다.)
8) 문제 해결하기 (profileapp의 create.html에서 가능)
(form 에 문제가 있는데, 이미지 파일의 경우 ,enctype을 명시해줘야한다. "multipart/form-data"를 대입해 줘야함
이 문구가 없으면 이미지 파일을 애초에 받지도 못함)
9) 결과
(profileapp의 user_id 가 없다는 오류 문구가 발생한다.)
일단 우리는 profileapp의 model의 user라는 필드가 있지만
forms.py에서는 user라는 필드를 사용하지 않고, 나머지 3개만 입력 받았다.
그 이유는 : fomrs.py 에서 user를 받게 되면 남의 프로필을 만들어 줄 수 있는 가능 성이 있기 때문이다.
클라이언트에서 이미지의 주인이 누구인지 알려주게 설정을 하면
이것을 조작하여 서버가 다른 사람의 프로필을 만들 수 있는 가능성이 있기 때문에 이를 서버내에서 구현하기로 하였다. 그래서 user필드를 넣지 않았던 것이다.
10) 직접 구현하기 (profileapp/view.py에서)
(form_valid 함수를 이용하여 user를 지정하게 되는 과정이다.)
(위에서 사진과 닉네임, 메시지를 입력후 오류가 위와 같이 helloworld로 오면서 오류가 해결되었다.)
(내가 직접 해본건데, 닉네임과 이미지, 메시지를 뒤로가기해서 다시 설정하려고 하면 unique 오류가 발생한다.)
(이후 마이페이지 들어가면 링크가 비활성화 되고 입력 했던 닉네임이 적용된 모습을 볼 수 있다.)