Django想要使用另一个视图中的变量

She*_*009 0 django variables templates views

我在视图中有一个名为client_items的项目列表.我希望能够使用变量items_list`,这是另一个在client_items中称为edit_order的视图.那么有没有办法从不同的视图调用变量?(从另一个视图导入变量并且能够在另一个视图中使用此变量)我不能只在client_items视图中写入它,因为它需要order_no扩充.

编辑:这是我最新的观点.我尝试创建另一个名为items_in_edit_order的视图.此时我得到`order_no未定义.

    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))
Run Code Online (Sandbox Code Playgroud)

Jor*_*ter 6

只是添加,因为没有人说过这个,似乎你还没理解这个:

您的client_items视图必须以某种方式访问order_no变量.如果由于某种原因,该值未通过URL传递,则必须从somehwere获取值.只有三个真实位置可以获得此值:

  1. 数据库:如果您存储类似于直接链接到用户的购物车之类的东西,这将起作用.因此,例如,您可能能够执行某些操作order_no = Order.objects.filter(cart__user=request.user).order_no,以获取与用户当前购物车关联的订单,然后返回该order_no值.
  2. 会话:您将order_no存储在会话中.这将假设您有一个早期视图,其中order_no设置了值,此时您将使用它保存它request.session['order_no']=order_no.稍后,当您想要检索值时,您只需order_no=request.session['order_no']在视图中使用.
  3. Cookie:不是真的推荐,但仍然是一个选项.这是因为复杂在第一观看你必须创建响应对象(如在resp = render_to_response(template_name, locals(), RequestContext(request))然后写一个cookie吧resp.set_cookie("order_no", order_no).你找回它使用request.COOKIES['order_no']

还有其他一些奇怪的地方可以存储价值:文件,缓存,其他数据存储格式等.完全没有推荐.