0
I가 잘 작동되는 다음보기 :장고 클래스 뷰 상속
class FriendView(View):
message_success = None
message_error = None
def get_pending_received(self):
return models.FriendRequest.objects.filter(recipient_user_id=self.request.user.id)
def get_existing_friends(self):
return models.Friendship.objects.filter(source_user_id=self.request.user.id)
def get_pending_sent(self):
return models.FriendRequest.objects.filter(sender_user_id=self.request.user.id)
def get(self, request):
return render(request, 'template/friends.html',
{'pending_received_requests': self.get_pending_received(),
'existing_friends': self.get_existing_friends(),
'pending_sent_requests': self.get_pending_sent(),
'message_success': self.message_success,
'message_error': self.message_error})
class DeleteFriendView(FriendView):
def get(self, request, friendship_id):
try:
friendship = models.Friendship.objects.get(id=friendship_id)
except models.Friendship.DoesNotExist:
raise Http404
if not ((friendship.source_user_id == request.user.id) or (friendship.dest_user_id == request.user.id)):
return HttpResponseForbidden("Forbidden")
friendship.delete()
message_success = "Friend has been deleted"
return render(request, 'template/friends.html',
{'pending_received_requests': self.get_pending_received(),
'existing_friends': self.get_existing_friends(),
'pending_sent_requests': self.get_pending_sent(),
'message_success': 'Friend has been Deleted'})
내 질문입니다하기 전에 실행되는 DeleteFriendView에 논리를 넣어하는 방법이있다() GET을 무시하지 않고() ? 이 청소기 및 중복 코드를 줄일 것이라고하지만 클래스보기에서 메서드 외부에서 액세스 할 수 없으므로 ClassView 설명서를 읽은 후이 작업을 수행하는 가장 좋은 방법을 알아낼 수가 없어? 가져 오기() 메소드를 재사용 할 수
class DeleteFriendView(FriendView):
def before_get(self):
try:
friendship = models.Friendship.objects.get(id=friendship_id)
except models.Friendship.DoesNotExist:
raise Http404
if not ((friendship.source_user_id == request.user.id) or (friendship.dest_user_id == request.user.id)):
return HttpResponseForbidden("Forbidden")
friendship.delete()
self.message_success = "Friend has been deleted"
이 방법 :
나는 이런 식으로 뭔가를 상상한다.
덕분에, 마크
감사합니다. Daniel. 다음과 같은 작업을 수행하기 위해 숨겨진 값으로 양식을 만드는 것이 더 나은가? –