I have a Django application. But i can’t an error that i have been struggling with for some time now.
Exception Value: 'tuple' object has no attribute 'get' Exception Location: /Library/Python/2.7/site-packages/django/middleware/clickjacking.py in process_response, line 30
And this is the traceback django provides me.
Traceback: File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response 201. response = middleware_method(request, response) File "/Library/Python/2.7/site-packages/django/middleware/clickjacking.py" in process_response 30. if response.get('X-Frame-Options', None) is not None:
I have a hard time figuring out why this error occurs. How can i find out where that tuple
is in my code?
The view:
def products(request, category=None, gender=None, retailer_pk=None, brand_pk=None): # If the request it doesn't have a referer use the full path of the url instead. if not request.META.get("HTTP_REFERER", None): referer = request.get_full_path() else: referer = request.META.get("HTTP_REFERER") if gender: products = ProductSlave.objects.filter(Q(productmatch__stockitem__stock__gt=0) & Q(productmatch__slave_product__master_product__gender=gender)).distinct() elif brand_pk: products = ProductSlave.objects.filter(Q(master_product__brand__pk=brand_pk)) brand = Brand.objects.get(pk=brand_pk) elif retailer_pk: retailer = Retailer.objects.get(pk=retailer_pk) products = retailer.productmatch_set.all() else: products = ProductSlave.objects.filter(Q(productmatch__stockitem__stock__gt=0)) if not retailer_pk: filt = create_filtering(productslaves=products, request=request) elif retailer_pk: filt = create_filtering(productmatches=products, request=request) sorting_selected = request.GET.get("sorter", None) # q_list is used to store all the Q's # Then they are reduced. And then filtered if "brand" in request.GET: brand_filtering = request.GET.get("brand", None) if brand_filtering: brand_filtering = brand_filtering.split("|") q_list = [] for filter in brand_filtering: if retailer_pk: q_list.append(Q(slave_product__master_product__brand__slug=filter)) else: q_list.append(Q(master_product__brand__slug=filter)) reduced_q = reduce(operator.or_, q_list) products = products.filter(reduced_q) if "kategori" in request.GET: category_filtering = request.GET.get("kategori", None) if category_filtering: category_filtering = category_filtering.split("|") q_list = [] for filter in category_filtering: if retailer_pk: q_list.append(Q(slave_product__master_product__product_category__slug=filter)) else: q_list.append(Q(master_product__product_category__slug=filter)) reduced_q = reduce(operator.or_, q_list) products = products.filter(reduced_q) if "stoerrelse" in request.GET: size_filtering = request.GET.get("stoerrelse", None) if size_filtering: size_filtering = size_filtering.split("|") q_list = [] for filter in size_filtering: if retailer_pk: q_list.append(Q(slave_product__productmatch__stockitem__size__pk=filter)) else: q_list.append(Q(productmatch__stockitem__size__pk=filter)) reduced_q = reduce(operator.or_, q_list) products = products.filter(reduced_q) if "farve" in request.GET: color_filtering = request.GET.get("farve", None) if color_filtering: color_filtering = color_filtering.split("|") q_list = [] for filter in color_filtering: if retailer_pk: q_list.append(Q(slave_product__sorting_color__slug=filter)) else: q_list.append(Q(sorting_color__slug=filter)) reduced_q = reduce(operator.or_, q_list) products = products.filter(reduced_q) if "pris" in request.GET: price_filtering = request.GET.get("pris", None) if price_filtering: price_filtering = price_filtering.split("|") q_list = [] if retailer_pk: q_list.append(Q(price__gte=price_filtering[0])) q_list.append(Q(price__lte=price_filtering[1])) else: q_list.append(Q(productmatch__price__gte=price_filtering[0])) q_list.append(Q(productmatch__price__lte=price_filtering[1])) reduced_q = reduce(operator.and_, q_list) products = products.filter(reduced_q) if sorting_selected: if sorting_selected == filt["sorting"][0]["name"]: filt["sorting"][0]["active"] = True if retailer_pk: products = products.annotate().order_by("-price") else: products = products.annotate().order_by("-productmatch__price") elif sorting_selected == filt["sorting"][1]["name"]: if retailer_pk: products = products.annotate().order_by("price") else: products = products.annotate().order_by("productmatch__price") filt["sorting"][1]["active"] = True elif sorting_selected == filt["sorting"][2]["name"]: filt["sorting"][2]["active"] = True if retailer_pk: products = products.order_by("pk") else: products = products.order_by("pk") else: if retailer_pk: products = products.order_by("pk") else: products = products.order_by("pk") else: if retailer_pk: products = products.order_by("pk") else: products = products.order_by("pk") if brand_pk: return render(request, 'page-brand-single.html', { 'products': products, "sorting": filt["sorting"], "filtering": filt["filtering"], "brand": brand, }) elif retailer_pk: return (request, 'page-retailer-single.html', { "products": products, "sorting": filt["sorting"], "filtering": filt["filtering"], "retailer": retailer, }) else: return render(request, 'page-product-list.html', { 'products': products, "sorting": filt["sorting"], "filtering": filt["filtering"] })
Advertisement
Answer
You are returning a tuple here:
elif retailer_pk: return (request, 'page-retailer-single.html', { "products": products, "sorting": filt["sorting"], "filtering": filt["filtering"], "retailer": retailer, })
Did you forget to add render
there perhaps:
elif retailer_pk: return render(request, 'page-retailer-single.html', { "products": products, "sorting": filt["sorting"], "filtering": filt["filtering"], "retailer": retailer, })