Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django希望使用另一个视图中的变量_Django_Templates_Variables_Views - Fatal编程技术网

Django希望使用另一个视图中的变量

Django希望使用另一个视图中的变量,django,templates,variables,views,Django,Templates,Variables,Views,我在一个名为client_items的视图中有一个项目列表。我希望能够使用变量items_list`这是另一个在client_items中称为edit_order的视图。那么,有没有一种方法可以从不同的角度调用变量?(从另一个视图导入一个变量,并能够在另一个视图中使用此变量)我不能只在client_items视图中编写它,因为它需要一个order_no augment 编辑:这是我的最新观点。我尝试过按编辑顺序创建另一个名为items的视图。在这一点上,我得到'订单'没有定义 def i

我在一个名为client_items的视图中有一个项目列表。我希望能够使用变量items_list`这是另一个在client_items中称为edit_order的视图。那么,有没有一种方法可以从不同的角度调用变量?(从另一个视图导入一个变量,并能够在另一个视图中使用此变量)我不能只在client_items视图中编写它,因为它需要一个order_no augment

编辑:这是我的最新观点。我尝试过按编辑顺序创建另一个名为items的视图。在这一点上,我得到'订单'没有定义

    def items_in_edit_order(order_no):
        order = models.Order.objects.get(pk = order_no)
        return order

def client_items(request, client_id = 0):
    client = models.Client.objects.get(pk = client_id)
    items = client.storageitem_set.all()
    order = items_in_edit_order(order_no)
    return render_to_response('items.html', {'items':items, 'client':client, 'order':order}, context_instance = RequestContext(request))

否。编写一个函数返回您感兴趣的值,并从两个视图调用它。

否。编写一个函数返回您感兴趣的值,并从两个视图调用它。

上面的家伙说的是正确的。您不应该尝试将变量“共享”到不同的视图

但是,如果您必须或有理由这样做,那么您可以将其存储在会话中,然后您可以在访问“请求”的任何视图中访问它


希望这能有所帮助。

上面那个家伙说的是对的。您不应该尝试将变量“共享”到不同的视图

但是,如果您必须或有理由这样做,那么您可以将其存储在会话中,然后您可以在访问“请求”的任何视图中访问它


希望能有所帮助。

只是补充一下,因为没有人说过这句话,而且你似乎还不明白这一点:

您的
client\u items
视图必须以某种方式访问
order\u no
变量。如果由于某种原因,该值没有通过URL传递,则它必须从某处获取该值。只有三个实际位置可以获得此值:

  • 数据库:例如,如果您正在存储与用户直接链接的购物车之类的东西,这将起作用。因此,例如,您可以执行类似于
    order\u no=order.objects.filter(cart\u user=request.user).order\u no
    的操作,该操作将获取与用户当前购物车关联的订单,然后返回
    order\u no
  • 会话:将订单号存储在会话中。这将假定您有一个早期视图,其中设置了
    订单号
    的值,此时您将使用
    请求保存它。会话['order\u no']=order\u号
    。稍后,当您想要检索该值时,只需在视图中使用
    order\u no=request.session['order\u no']
  • Cookie:不推荐,但还是一个选项。这很复杂,因为在第一个视图中,您必须创建响应对象(如
    resp=render\u to\u response(template\u name,locals(),RequestContext(request))
    ,然后向其写入cookie
    resp.set\u cookie(“order\u no”,order\u no)
    。您可以使用
    request.COOKIES['order\u no']检索它

  • 还有其他奇怪的地方可以存储值:文件、缓存、其他数据存储格式等。不推荐使用。

    只是添加,因为没有人说过这一点,而且您似乎还不明白这一点:

    您的
    client\u items
    视图必须以某种方式访问
    order\u no
    变量。如果由于某种原因没有通过URL传递该值,它必须从以下位置获取该值。它只能从三个实际位置获取该值:

  • 数据库:例如,如果您存储与用户直接链接的购物车之类的东西,这将起作用。因此,例如,您可以执行类似于
    order\u no=order.objects.filter(cart\u user=request.user)的操作.order\u no
    将获取与用户当前购物车关联的订单,然后返回
    order\u no
  • 会话:您将订单号存储在会话中。这将假定您有一个早期视图,其中设置了
    订单号
    的值,此时您将使用
    request.Session['order\u no']=order\u no
    。稍后,当您想要检索该值时,您只需使用
    订单号=request.Session>即可视图中的['order_no']
  • Cookie:不推荐使用,但还是一个选项。这很复杂,因为在第一个视图中,您必须创建响应对象(如
    resp=render\u to\u response(template\u name,locals(),RequestContext(request))
    然后向其写入Cookie
    resp.set\u Cookie(“order\u no”,order\u no)
    。您可以使用
    request.COOKIES['order\u no']检索它。

  • 还有其他奇怪的地方可以存储值:文件、缓存、其他数据存储格式等。不推荐使用。

    可能重复@Jordan的可能重复-使用Sessions是最好的方法。一些好信息,谢谢。@Jordan-使用Sessions是最好的方法。一些好信息,谢谢。