2017-12-28 9 views
0

단순히 데이터를 표시하는 양식을 구현하려고하고 있으며 사용자에게 "수락"또는 "거부"선택을 제공합니다. get_context_data() 메서드를 재정 의하여 표시 할 데이터를 보내고 템플릿에 <input type="submit"> 두 개가 있습니다.더미 양식없이 필드없는 양식을 만드는보다 효율적인 방법은 무엇입니까? 양식?

class FriendResponseForm(forms.Form): 
    pass 

에보다 효율적으로, 장고 방법이 있어야합니다 : 양식은 어떤 입력이나 선택을 허용하지 않기 때문에, 나는이 더미 양식을 가지고

class FriendResponseView(LoginRequiredMixin, FormView): 
    form_class = FriendResponseForm 
    template_name = 'user_profile/friend_response.html' 
    success_url = '/' 

    def get_context_data(self, **kwargs): 
     context = super(FriendResponseView, self).get_context_data(**kwargs) 
     context['respond_to_user'] = self.kwargs.get('username') 
     responding_profile = Profile.objects.get(
      user__username=self.request.user) 
     requesting_profile = Profile.objects.get(
      user__username=self.kwargs['username']) 

     friend_object = Friend.objects.get(requester=requesting_profile, accepter=responding_profile) 
     context['accepter_asks'] = friend_object.requester_asks 
     return context 

    def form_valid(self, form): 
     super(PairResponseView, self).form_valid(form) 
     if 'accept' in self.request.POST: 
      # do something 
     else: 
      return redirect('/') 

: 여기

은이다 동일한 결과를 얻을 수 있습니다. 나는 그것에 대해 어떻게 갈 것인가?

답변

1

가장 좋은 방법은 FormView를 사용하는 것이 아니라 기본 TemplateView를 사용하는 것입니다. 그런 다음 제출 논리를 수행하려면 post을 정의하십시오.

class FriendResponseView(LoginRequiredMixin, TemplateView): 
    template_name = 'user_profile/friend_response.html' 

    def get_context_data(self, **kwargs): 
     ... 

    def post(self, request): 
     if 'accept' in self.request.POST: 
      # do something 
     else: 
      return redirect('/') 
관련 문제