2017-09-21 134 views
0

好吧我知道这个问题标题看起来非常熟悉这个网站上的许多人,但我发誓我回顾了很多,几乎所有的缩进和变量范围的问题。这似乎并不是这种情况,所以我希望有人可以帮忙。NameError:名称'order_vals'未定义。 - Python,Django

所以我写一个函数在我models.py到数据帧解析出到对象的列表发送给我的views.py功能和我在标题中引用的NameError,尽管之前它会立即声明违规的变量用来。代码如下所示

# Setting some default values for our order records. 
    order_vals = { 
     'site': 'WH30-123', 
     'sale_type': 'CUST', 
     'sales_rep': 'JOHN DOE', 
     'customer_number': "123456789", 
     'cust_po_number': '{}-{}'.format(self.start_date.strftime(d_form),self.end_date.strftime(d_form)), 
     'fob': 'ORIGIN' 
    } 
    # Using a helper function to generate a list of orders. 
    orders=helpers.order_parse(ords,order_vals) 

好了,不但我能看到什么不对键入了一个小字典,并把它传递给一个函数,当我一步通过使用import pdb; pdb.set_trace()这个代码,我可以执行order_vals并返回所有这些值完全如我写出来的那样。我在这里完全失败。如果有帮助,这里是我传递字典的函数。

def order_parse(shipments, order_values): 
    # Creating our empty list 
    orders=list() 
    # Iterating over each 
    for i,row in shipments.iterrows(): 
    orders.append(
     dict(
      order_vals,**{ 
       'shipto_number': row['shipto_number'], 
       'order_number': row['order_number'] 
       } 
      ) 
     ) 
    return orders 

我也已经尝试使用kwargs规范没有效果。

任何想法?

+0

我不是Python的专家,但变量是在你的函数名为“order_values”(见PARAMS)和您还在使用旧名“order_vals”在它不存在于你的功能的上下文...? – TheNightCoder

+0

是的,这只是我在Jupyter笔记本中使用了一个约定,我在开发过程中,在我的Django项目的helpers.py文件中稍有不同。 – RyanM

回答

1

注意回溯中的行号。这个问题实际上看起来像它在你传递的字典功能:

def order_parse(shipments, order_values):    # <--- "order_values" 
    # Creating our empty list 
    orders=list() 
    # Iterating over each 
    for i,row in shipments.iterrows(): 
    orders.append(
     dict(
      order_vals,**{        # <--- "order_vals" 
       'shipto_number': row['shipto_number'], 
       'order_number': row['order_number'] 
       } 
      ) 
     ) 
    return orders 
+0

圣洁的废话。我不能相信我错过了这一点。非常感谢! – RyanM

0

的order_vals是不是你function.The局部变量里面定义的函数内部传递order_vals是order_values按你的函数定义。 尝试:

 def order_parse(shipments, order_values): 
       # Creating our empty list 
       orders=list() 
       # Iterating over each 
       for i,row in shipments.iterrows(): 
       orders.append(
          dict(
          order_values,**{ 
          'shipto_number': row['shipto_number'], 
      'order_number': row['order_number'] 
          } 
          ) 
       ) 

退货单