首页 > 解决方案 > 如何从 url 创建变量?

问题描述

我的 URL 采用如下变量“payment_option”:

 path('payment/<payment_option>/', PaymentView.as_view(), name='payment')

我想在 PaymentView 呈现的模板中显示该变量。

问题是“payment_option”不是我模型中的参数(如 pk 或 slug),但他的值来自另一个视图处理的表单。

class CheckoutView(View):
  [...]
  def post(self, *args, **kwargs):
        form = CheckoutForm(self.request.POST or None)
        [...]
        payment_option = form.cleaned_data.get('payment_option')

        if payment_option == 'S':
          return redirect('core:payment', payment_option='stripe')
        elif payment_option == 'P':
          return redirect('core:payment', payment_option='paypal')

希望我的解释尽可能清楚,我是 Django 的新手,因此非常感谢任何提示或建议。

标签: djangodjango-templatesdjango-views

解决方案


您可以从 kwargs 获取 urls 变量。

class CheckoutView(View):
    [...]
    def post(self, *args, **kwargs):
        payment_option = kwargs.get('payment_option',None)
        form = CheckoutForm(self.request.POST or None)
        [...]
        #payment_option = form.cleaned_data.get('payment_option')

        if payment_option == 'S':
            return redirect('core:payment', payment_option='stripe')
        elif payment_option == 'P':
            return redirect('core:payment', payment_option='paypal')

推荐阅读