我正在尝试直接从另一个视图调用(如果可能的话)。我有一个观点:

def product_add(request, order_id=None):
    # Works. Handles a normal POST check and form submission and redirects
    # to another page if the form is properly validated.


然后,我有第二个视图,该视图向数据库查询产品数据,并应调用第一个。

def product_copy_from_history(request, order_id=None, product_id=None):
    product = Product.objects.get(owner=request.user, pk=product_id)

    # I need to somehow setup a form with the product data so that the first
    # view thinks it gets a post request.
    2nd_response = product_add(request, order_id)
    return 2nd_response


由于第二个需要在第一个视图中添加产品,所以我想知道是否可以从第二个视图中调用第一个视图。

我的目标只是将请求对象传递到第二个视图,然后将获得的响应对象依次返回给客户端。

任何帮助都将不胜感激,如果这是一种不好的方法,请予以批评。但是,然后一些指针..避免DRY-ing。

谢谢!

杰拉德。

最佳答案

天哪,我在想什么。这将是最干净的解决方案:

def product_add_from_history(request, order_id=None, product_id=None):
    """ Add existing product to current order
    """
    order = get_object_or_404(Order, pk=order_id, owner=request.user)
    product = Product.objects.get(owner=request.user, pk=product_id)

    newproduct = Product(
                    owner=request.user,
                    order = order,
                    name = product.name,
                    amount = product.amount,
                    unit_price = product.unit_price,
                    )
    newproduct.save()
    return HttpResponseRedirect(reverse('order-detail', args=[order_id]) )

关于django - Django:将请求直接(内联)传递到第二个 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1893456/

10-09 12:37