작성
·
199
0
안녕하세요! 수업 재미있게 수강하고 있는 학생입니다
다름이 아니라, 33강까지 수강하고 나서 테스트하는 중에 오류가 나서 질문드리고자 합니다.
로그인 후 해당 프로필을 만들고 다시 메세지를 변경하고 싶어서 바꾸고 난 후 edit을 누르는 순간 수정이 안되고 에러가 나는데요,
에러 화면은 다음과 같습니다.
강의 내용은 그대로 따라하고 있었는데 혹시 제가 놓친 부분이 있을까요?
데코레이터 부분에서 pk값이 잘못되어있다는 의미일까요?
구글링을 해보고 스택오버플로우를 몇개 보았는데, 상황이 달라서 명확한 해답을 얻지 못했습니다.
제가 아직 서툴어서, 이럴 경우 어떤 키워드로 검색을 해보면 좋을지도 알려주시면 감사하겠습니다!
답변 1
1
안녕하세요!
강좌 잘 들어주셔서 감사합니다!
질문 확인했습니다.
답변을 드리자면, 질문중에
로그인 후 해당 프로필을 만들고 다시 메세지를 변경하고 싶어서 바꾸고 난 후 edit을 누르는 순간
이라고 말씀하셨는데, 메세지를 변경하시려고
Profile 을 수정하는 페이지로 접속을 시도하셨다는 걸로 이해를 해도 되겠죠?
그런데 첨부해주신 에러 페이지를 보게되면,
profileapp 의 데코레이터가 아닌 accountapp 의 데코레이터에서 에러가 난 것으로 확인이 됩니다.
그렇다면 저희가 작성한 ProfileUpdateView 를 보게되면,
@method_decorator(profile_ownership_required, 'get')
@method_decorator(profile_ownership_required, 'post')
class ProfileUpdateView(UpdateView):
model = Profile
context_object_name = 'target_profile'
form_class = ProfileCreationForm
template_name = 'profileapp/update.html'
def get_success_url(self):
return reverse('accountapp:detail', kwargs={'pk': self.object.user.pk})
메서드 데코레이터를 통해 저희가 작성한 profile_ownership_required 가 적용되어있습니다.
혹시 해당 부분이 account_ownership_required 와 같이 accountapp 의 데코레이터로 적용되어 있지는 않으신가요?
Profile 의 pk를 제공받았는데,
해당 pk를 가지는 User 객체를 찾아보니 없었다
라는게 에러의 요지 같습니다.
아니라면 HTML 단에서의 문제일 수도 있습니다.
edit 버튼을 눌렀을때
profile update로 보내야 하는데
account update쪽으로 보내는 식으로 작성하지는 않으셨는지
확인해보시길 바랍니다.
...
href="{% url 'profileapp:update' pk=target_user.profile.pk %}">
...
답변을 참고해서 한번 코드 확인을 해보시고
그럼에도 문제 해결이 되지 않는다면, 계속 질문 남겨주시길 바랍니다.
좋은하루 보내시구요!
감사합니다-
html단의 문제였네요ㅠㅠ 감사합니다!