【问题标题】:Want to print out a list of items from another view django想要从另一个视图 django 打印出项目列表
【发布时间】:2011-02-08 15:34:23
【问题描述】:

我有一个显示列表项的视图。

def edit_order(request, order_no):

try:
    status_list = models.Status.objects.all()
    order = models.Order.objects.get(pk = order_no)
    if order.is_storage:
        items = models.StorageItem.objects.filter(orderstoragelist__order__pk = order.pk)
    else:
        items = models.StorageItem.objects.filter(orderservicelist__order__pk = order.pk)
except:
    return HttpResponseNotFound()

我想将这些项目列表放在另一个视图中。不幸的是,事实证明这比我想象的要棘手。

@login_required
def client_items(request, client_id = 0):
    client = None
    items = None
    try:
        client = models.Client.objects.get(pk = client_id)
        items = client.storageitem_set.all()
        item_list = models.StorageItem.objects.filter(orderstoragelist__order__pk = order.pk)
    except:
        return HttpResponse(reverse(return_clients))
    return render_to_response('items.html', {'items':items, 'client':client, 'item_list':item_list}, context_instance = RequestContext(request))

我想也许我可以粘贴项目的定义,然后调用 item_list,但这不起作用。任何想法

items.html

{% for item in item_list %}
    {{item.tiptop_id}
{% endfor %}

【问题讨论】:

  • 不是很清楚你想在这里做什么。 status_list 已定义但未在您的第一个示例中使用。是否相关?您最好添加一个 Manager 方法,这是向模型添加模型范围行为的常用方法...
  • 我在一个名为 edit_order 的视图上有一个项目列表。我想在 client_item 视图中显示相同的项目列表。就是这样。
  • 您好,您在尝试在模板上渲染 item_list 或类似的东西时遇到错误吗?
  • 我得到一个白屏,屏幕上印有网址。 /tiptop/client 在这种情况下。
  • 这样的话,我们也可以看看你的模板吗?

标签: django templates list views


【解决方案1】:

来自您的评论:

我得到一个白屏,屏幕上印有网址。 /tiptop/client 在这种情况下。

因为这就是你所要求的:

except:
    return HttpResponse(reverse(return_clients))

这意味着如果上面有任何错误或问题,您的视图将仅输出仅包含该 URL 的响应。也许您打算使用 HttpResponseRedirect,因此浏览器实际上会重定向到该 URL - 但您仍然不应该使用空白的 except,因为它会阻止您查看实际出了什么问题。

要回答主要问题,请考虑您的 edit_order 视图返回的内容:它为您提供带有渲染模板的完整 HTML 响应。您如何将其用作另一个视图中的查询中的元素?你需要从逻辑上思考这个问题。

一种可能的解决方案是定义一个单独的函数,它只返回您想要的 data - 作为一个普通的查询集 - 两个视图都可以调用它。这样做是你想要的吗?

【讨论】:

  • 我想这将是解决方案,如果我新如何做到这一点。
  • 对不起,我想我不能再帮你了。如果您不知道如何定义函数并从中返回数据,那么您不应该在 StackOverflow 上提问,您应该遵循基本的“编程入门”教程。
猜你喜欢
  • 1970-01-01
  • 2022-08-15
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多