Hansel

연극 프로젝트/프로필,글 수정 삭제 본문

웹/Django

연극 프로젝트/프로필,글 수정 삭제

핑슬 2022. 2. 4. 21:39
글 등록

결제 내역을 등록하기 위해선 유저의 정보 탭에 들어와 추가를 눌러 등록해야 한다.

고려해야 할 점은 폼을 생성 시 어떤 필드를 포함해야 하는지 그리고 글과 작성자를 어떻게 연결해야 하는지 이다.

 

폼의 네모칸은 포함된 필드이고 모델의 네모칸은 포함되지 않은 필드이다.

제외된 부분들은 입력 할 필요가 없기 때문에 제외되었다. owner는 글의 작성자를 입력해서 등록할 수 도 있지만 효율적이지 않기 때문에 제외시키고 view에서 처리하는게 좋다.

createPost 함수에선 우선 현재 유저의 정보를 user 변수에 저장한다.

그리고 postForm 객체를 생성하고 사용자가 입력할 수 있도록 return한다.

 

create_post가 form을 return해 주기 때문에 html 내부에서 장고 템플릿을 이용해 해당 변수를 가져와 사용 할 수 있다.

사용자가 폼을 작성하고 입력(input) 버튼을 누르면 POST 요청이 보내진다.

유저가 입력한 데이터가 별 문제 없으면 form.save()로 저장을 한다.

Post 모델에서 id와 created는 알아서 생성되지만 owner는 연결을 시켜줘야 한다.

commit=False를 사용해서 지금까지 입력한 데이터는 가지고 있되 데이터베이스에 저장은 하지 않도록 한다.

그리고 나서 owner를 연결시켜 주고 저장을 하면 된다.

 

수정,삭제

삭제는 생성에서 폼을 불러올때 인스턴스를 추가해주는 것 말고는 크게 다를게 없다.

수정 , 삭제는 간단하니까 생략!

여기서 그나마 쓸만한건 request.GET.next이다.

 

Request.get.next

왼쪽은 팀 정보 보여주는 account.html

삭제나 수정을 하는 페이지에는 뒤로가기 버튼이 있는데 그에 대한 url을 {% url 'account' %} 으로 해줘도 되지만 사진과 같이 next로 그 다음 주소를 미리 설정해서 GET.next로 동적 url 설정도 가능하다

url 태그가 여러개 일때 쓰기 좋은데 배운거 안까먹으려고 일단 썼다.

 

다른 유저의 프로필

메인 화면에는 각 팀별로 간략한 프로필이 보여지는데 그걸 클릭했을때 해당하는 팀의 자세한 정보를 볼 수 있도록 해야한다.

 

프로필에선 각 팀별로 결제한 내역만 보여줘야 하기 때문에 모든 Post를 가져오면 안된다.

Post & Team 과 같이 관계가 형성된 모델에서는 _set을 통해 가져오면 된다.

Team이 여러개의 Post를 가지고 있는 관계니까 우선 pk를 통해 해당되는 프로필의 객체를 가져오고

_set.all()을 통해 그 객체의 post 셋만 가져오면 된다.