2016-03-30 2 views
0

У меня есть представление, которое отображает элементы в корзине для каждого пользователя в сеансе.Локальная переменная 'items', на которую ссылаются перед назначением django

Вот

def cart(request): 
    if request.method == "POST": 
     print "rp ", request.POST 
     description = request.POST['description'] 
     print "Description is ", description 
     price = request.POST['price'] 
     print "Price is ", price 
     quantity = request.POST['quantity'] 
     print "Quantity is ", quantity 
     client = request.user 
     print "Client is ", client 

     # items = Cart.objects.get_or_create(client="client", description="description", price="price", quantity="quantity") 
     item, created = Cart.objects.get_or_create(client=client, description=description, price=price, quantity=quantity) 
     item.save() 

     try: 
      items = Cart.objects.get(client=user) 
      print "ITEMS", items 
     except ObjectDoesNotExist: 
      items = None 
    # return HttpResponseRedirect('/selly/cart/') 
    return render(request, 'selly/cart.html', {'items': items}) 

В результате я получаю «локальные переменные„элементы“ссылочные перед тем назначением». И это указывает вернуть визуализации (запрос, «Selly/cart.html», { «пунктов»: пункты})

путаюсь

+0

'items' вводит в заблуждение, так как вы могли только когда-либо возвращать один элемент с помощью' get' – Sayse

+0

, я сделал запрос, чтобы он находился вне блока if, а полученная ошибка - это глобальное имя «пользователь» не определено в «items = Cart.objects.get (client = user) " – uche

ответ

1

Ваш item переменная только инициализируется в if request.method == "POST" блоке, но если вы не имея метода POST, переменная item никогда не инициализируется, поэтому при вызове render... переменная item не определена.

Самое простое решение - сделать запрос объекта за пределами if блока.

+0

Я сделал запрос, чтобы он находился вне блока if, и полученная ошибка - это глобальное имя« пользователь »не определено в« items = Cart.objects.get (client = user) » – uche

+1

Ошибка не могла быть более понятной, у вас нет переменной с именем 'user', как этот код может быть действительным? –

+0

Пользователь из модели пользователя django, я намереваюсь получить все предметы, относящиеся к конкретному пользователю, который входит в систему – uche

Смежные вопросы