Python Django错误:update_qty()获得意外的关键字参数“slug”

Python Django错误:update_qty()获得意外的关键字参数“slug”,python,django,Python,Django,当我试图更新返回的订单摘要页面中的项目数时,我试图修复一个错误, update\u qty获得意外的关键字参数“slug” 没有特定的行指示此错误的原因。我已经包含了更新数量的视图以供参考 以下是views.py: class OrderSummaryView(LoginRequiredMixin, View): def get(self, *args, **kwargs): try: order = Order.objects.get(user

当我试图更新返回的订单摘要页面中的项目数时,我试图修复一个错误, update\u qty获得意外的关键字参数“slug”

没有特定的行指示此错误的原因。我已经包含了更新数量的视图以供参考

以下是views.py:

class OrderSummaryView(LoginRequiredMixin, View):
    def get(self, *args, **kwargs):

        try:
            order = Order.objects.get(user=self.request.user, ordered=False)
            context = {
                'object': order
            }
            return render(self.request, 'order_summary.html', context)
        except ObjectDoesNotExist:
            messages.warning(self.request, "You do not have an active order")
            return redirect("/")

@login_required
def update_qty(request):
    if request.method == 'POST':
        item_slug = request.POST.get('item_slug', None)
        # Check for an order_item
        order_item_pk = request.POST.get('order_item', None)
        order_item = OrderItem.objects.filter(pk=order_item_pk).first()
        if not order_item:
            messages.info(request, "Product was not in your cart")
            return redirect("product", slug=item_slug)
        # Check for an active order
        order = Order.objects.filter(user=request.user, ordered=False).first()
        if not order:
            messages.info(request, "You do not have an active order")
            return redirect("product", slug=item_slug)
        # Check that order_item is in active order
        if not order_item.order == order:
            messages.info(request, "Product was not in your cart")
            return redirect("product", slug=slug)
        # Update quantities
        action = request.POST.get('action', None)
        if action == "plus":
            order_item.quantity += 1
            order_item.save()
            messages.info(request, "Product quantity was updated.")
        elif action == "minus":
            order_item.quantity -= 1
            if order_item.quantity < 1:
                order_item.delete()
                messages.info(request, "Product was removed from cart.")
            else:
                order_item.save()
                messages.info(request, "Product quantity was updated.")
    return redirect("order-summary")
将slug=None添加到基于更新数量函数的视图中

像这样:
如果变量未作为关键字传递,这也将为变量提供一个默认值为“无”。

能否显示“更新数量”视图?似乎您没有给它一个名为slug的关键字参数,尽管您的URL模式声明您这样做了。@RobinZigmond我添加了更新,谢谢。@Lewis的答案应该可以解决这个问题,但我不确定这是正确的做法。实际上,在该函数的任何地方都没有使用slug参数,事实上,在GET请求的情况下,它只是重定向。那么,为什么要在URL中包含slug?
<div class="pull-center">
    <form method="POST" action="{% url 'core:update-qty' order_item.item.slug %}">
        {% csrf_token %}
        <button type="submit" name="action" value="minus" class="btn mr-2"><i class="fa fa-minus"></i></button>
        {{ order_item.quantity }}<button type="submit" name="action" value="plus" class="btn ml-2"><i class="fa fa-plus"></i></button>
        <input type="hidden" name="item_slug" value="{{ order_item.item.slug }}">
        <input type="hidden" name="order_item" value="{{ order_item.pk }}">
    </form>
</div>                </td>
    path('update-qty/<slug>/', update_qty, name='update-qty'),
class Item(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    price = models.FloatField()
    slug = models.SlugField(unique=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("core:product", kwargs={
            'slug': self.slug
        })

    def get_update_qty(self):
        return reverse("core:update_qty", kwargs={
            'slug': self.slug
        })

def update_qty(request, slug=None):
def update_qty(request, **kwargs):  
    slug = kwargs.pop('slug',None)