ValueError: представление create.views.CheckoutView не возвращало объект HttpResponse. Вместо этого он вернулся - PullRequest
0 голосов
/ 04 мая 2020

Я получаю ValueError, что приведенный ниже класс не вернул ни одного httpresponse, когда я пытаюсь перенаправить на шаблон. предполагается, что перенаправление go к представлению оплаты чередованием.

- это целый класс, у которого есть вызов перенаправления

class CheckoutView(View):
def get(self, *args, **kwargs):
    form = forms.CheckoutForm()
    context = {
        'form': form
    }

    return render(self.request, "checkout.html", context)

def post(self, *args, **kwargs):
    form = forms.CheckoutForm(self.request.POST or None)
    try:
        equipment_order = models.EquipmentOrder.objects.get(user=self.request.user, ordered=False)
        if form.is_valid():
            street_address = form.cleaned_data.get('street_address')
            apartment_address = form.cleaned_data.get('apartment_address')
            country = form.cleaned_data.get('country')
            zip = form.cleaned_data.get('zip')
            '''
            TODO: add functionality to these fields
            same_shipping_address = form.cleaned_data.get('same_shipping_address')
            save_info = form.cleaned_data.get('save_info')
            '''
            payment_option = form.cleaned_data.get('payment_option')
            billing_address = models.BillingAddress(
                user=self.request.user,
                street_address=street_address,
                apartment_address=apartment_address,
                country=country,
                zip=zip
            )
            billing_address.save()
            equipment_order.billing_address = billing_address
            equipment_order.save()

            if payment_option == 'S':                
                return redirect('create:payment', payment_option='stripe')
            elif payment_option == 'P':
                return redirect('create:payment', payment_option='paypal')
            else:
                messages.warning(self.request, "Invalid payment option")
                return redirect('create:checkout')
    except ObjectDoesNotExist:
        messages.error(self.request, "You do not have an active order")
        return redirect("create:order_summary")

1 Ответ

0 голосов
/ 04 мая 2020

1) Удалите попытку / за исключением того, что я думаю, что она лучше

2) Я думаю, у вас есть проблема с 'payement_option', возможно, она не дает ожидаемого значения, попробуйте сначала распечатать ее, чтобы увидеть, что

3) удалите 'или None' из CheckoutForm

4) вы можете избежать использования 'self', импортировав форму таким образом:

from .forms import CheckoutForm
...
form = CheckoutForm(request.POST)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...