मैं अपने सभी फंक्शन बेस्ड व्यू को क्लास बेस्ड व्यू में बदलने की कोशिश कर रहा हूं, मैं इस व्यू को छोड़कर काफी सफल रहा हूं, यह एक डिटेल व्यू है जिसमें पेस्टैक पेमेंट गेटवे शामिल है। किसी भी मदद की अत्यधिक सराहना की जाएगी।

def car_rent_detail_view(request, pk):
    object = get_object_or_404(CarRent, id=pk)

    paystack = PaystackAccount(
        settings.PAYSTACK_EMAIL,
        settings.PAYSTACK_PUBLIC_KEY,
        object.total_cost
    )

    context = {'object': object, 'pk_public': settings.PAYSTACK_PUBLIC_KEY, 'currency': 'NGN', 'paystack': paystack,
               }
    if request.method == 'POST':
        if paystack.verify_transaction(request.POST['reference']):
            messages.success(request, "payment successfull")
            …
            car_rented.save()
            …
            rent_activation.save()
            messages.success(request, "Rent successfully updated")


    return render(request, 'app/CarRent_detail.html', context=context)

मैं नीचे दिए गए सीबीवी को एफबीवी में बदलना चाहता हूं ताकि मैं इसमें भुगतान कार्यक्षमता जोड़ सकूं।

class ContestantDetail(DetailView, FormMixin):
    model = Contestant
    context_object_name = 'contestants'
    template_name = 'contest/contestant_detail.html'
    form_class = VoteForm

    def get_success_url(self):
        return reverse('contest:contestant-detail', kwargs={'pk': self.object.pk})

    def get_context_data(self, *args, **kwargs):
        context = super(ContestantDetail, self).get_context_data(*args, **kwargs)
        context['vote_contestant'] = Contestant.objects.get(pk=self.kwargs.get('pk'))
        return context

    def post(self, request, *args, **kwargs):
        form = self.get_form()
        self.object = self.get_object()

        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form, *args, **kwargs):
        contestant = Contestant.objects.get(pk=self.kwargs['pk'])
        ...
        contestant.save()

        messages.success(self.request, f'You have successfully casted {vote_count} vote.')
        return super().form_valid(form)
0
Abdul Giwa 7 अक्टूबर 2021, 09:39
2
पहली नजर में, यह एक ऐसा दृष्टिकोण नहीं है जिसके लिए वर्ग-आधारित दृश्य समकक्ष है। आम तौर पर वर्ग-आधारित विचारों का उपयोग साधारण दृश्यों के लिए किया जाता है जो अन्यथा हर बार बॉयलरप्लेट कोड दोहराते हैं। लेकिन अगर कोई दृश्य वर्ग-आधारित विचारों में से एक में फिट नहीं होता है, तो फ़ंक्शन-आधारित दृश्य का उपयोग करना उचित है।
 – 
Willem Van Onsem
7 अक्टूबर 2021, 09:40
मुझे यह बताने के लिए धन्यवाद, अब मेरी समस्या यह है कि मेरे पास एक वर्ग आधारित विवरण है जिसमें मुझे भुगतान विधि जोड़ने की आवश्यकता है, भुगतान कार्यक्षमता के लिए वापस एफबीवी में परिवर्तित करना मुश्किल होगा, अगर यह ठीक है तो मैं अपना प्रश्न संपादित करूंगा।
 – 
Abdul Giwa
8 अक्टूबर 2021, 12:01

1 उत्तर

सबसे बढ़िया उत्तर

जैसा कि नीचे दिखाया गया है, ऊपर दिए गए वर्ग आधारित दृश्य को फ़ंक्शन आधारित दृश्य में परिवर्तित किया जा सकता है।

def contestant_detail_view(request, pk):
    get_object_or_404(Contestant, pk=pk)
    form = VoteForm()

    context = {'contestants': get_object_or_404(Contestant, pk=pk),
               'vote_contestant': Contestant.objects.get(pk=pk),
               'form': form}

    if request.method == 'POST':
        form = VoteForm(request.POST)
        if form.is_valid():
            con = Contestant.objects.get(pk=pk)
            ...
            con.save()

    else:
        form = VoteForm()

    return render(request, 'contest/contestant_detail.html', context)
0
Abdul Giwa 12 अक्टूबर 2021, 09:42