I have a Django application. But i can’t an error that i have been struggling with for some time now.
JavaScript
x
4
1
Exception Value: 'tuple' object has no attribute 'get'
2
3
Exception Location: /Library/Python/2.7/site-packages/django/middleware/clickjacking.py in process_response, line 30
4
And this is the traceback django provides me.
JavaScript
1
6
1
Traceback:
2
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
3
201. response = middleware_method(request, response)
4
File "/Library/Python/2.7/site-packages/django/middleware/clickjacking.py" in process_response
5
30. if response.get('X-Frame-Options', None) is not None:
6
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:
JavaScript
1
145
145
1
def products(request, category=None, gender=None, retailer_pk=None, brand_pk=None):
2
# If the request it doesn't have a referer use the full path of the url instead.
3
if not request.META.get("HTTP_REFERER", None):
4
referer = request.get_full_path()
5
else:
6
referer = request.META.get("HTTP_REFERER")
7
8
if gender:
9
products = ProductSlave.objects.filter(Q(productmatch__stockitem__stock__gt=0) &
10
Q(productmatch__slave_product__master_product__gender=gender)).distinct()
11
elif brand_pk:
12
products = ProductSlave.objects.filter(Q(master_product__brand__pk=brand_pk))
13
brand = Brand.objects.get(pk=brand_pk)
14
elif retailer_pk:
15
retailer = Retailer.objects.get(pk=retailer_pk)
16
products = retailer.productmatch_set.all()
17
else:
18
products = ProductSlave.objects.filter(Q(productmatch__stockitem__stock__gt=0))
19
20
if not retailer_pk:
21
filt = create_filtering(productslaves=products, request=request)
22
elif retailer_pk:
23
filt = create_filtering(productmatches=products, request=request)
24
25
sorting_selected = request.GET.get("sorter", None)
26
27
# q_list is used to store all the Q's
28
# Then they are reduced. And then filtered
29
if "brand" in request.GET:
30
brand_filtering = request.GET.get("brand", None)
31
if brand_filtering:
32
brand_filtering = brand_filtering.split("|")
33
q_list = []
34
for filter in brand_filtering:
35
if retailer_pk:
36
q_list.append(Q(slave_product__master_product__brand__slug=filter))
37
else:
38
q_list.append(Q(master_product__brand__slug=filter))
39
reduced_q = reduce(operator.or_, q_list)
40
products = products.filter(reduced_q)
41
42
if "kategori" in request.GET:
43
category_filtering = request.GET.get("kategori", None)
44
if category_filtering:
45
category_filtering = category_filtering.split("|")
46
q_list = []
47
for filter in category_filtering:
48
if retailer_pk:
49
q_list.append(Q(slave_product__master_product__product_category__slug=filter))
50
else:
51
q_list.append(Q(master_product__product_category__slug=filter))
52
reduced_q = reduce(operator.or_, q_list)
53
products = products.filter(reduced_q)
54
55
if "stoerrelse" in request.GET:
56
size_filtering = request.GET.get("stoerrelse", None)
57
if size_filtering:
58
size_filtering = size_filtering.split("|")
59
q_list = []
60
for filter in size_filtering:
61
if retailer_pk:
62
q_list.append(Q(slave_product__productmatch__stockitem__size__pk=filter))
63
else:
64
q_list.append(Q(productmatch__stockitem__size__pk=filter))
65
reduced_q = reduce(operator.or_, q_list)
66
products = products.filter(reduced_q)
67
68
if "farve" in request.GET:
69
color_filtering = request.GET.get("farve", None)
70
if color_filtering:
71
color_filtering = color_filtering.split("|")
72
q_list = []
73
for filter in color_filtering:
74
if retailer_pk:
75
q_list.append(Q(slave_product__sorting_color__slug=filter))
76
else:
77
q_list.append(Q(sorting_color__slug=filter))
78
reduced_q = reduce(operator.or_, q_list)
79
products = products.filter(reduced_q)
80
81
if "pris" in request.GET:
82
price_filtering = request.GET.get("pris", None)
83
if price_filtering:
84
price_filtering = price_filtering.split("|")
85
q_list = []
86
if retailer_pk:
87
q_list.append(Q(price__gte=price_filtering[0]))
88
q_list.append(Q(price__lte=price_filtering[1]))
89
else:
90
q_list.append(Q(productmatch__price__gte=price_filtering[0]))
91
q_list.append(Q(productmatch__price__lte=price_filtering[1]))
92
reduced_q = reduce(operator.and_, q_list)
93
products = products.filter(reduced_q)
94
95
if sorting_selected:
96
if sorting_selected == filt["sorting"][0]["name"]:
97
filt["sorting"][0]["active"] = True
98
if retailer_pk:
99
products = products.annotate().order_by("-price")
100
else:
101
products = products.annotate().order_by("-productmatch__price")
102
elif sorting_selected == filt["sorting"][1]["name"]:
103
if retailer_pk:
104
products = products.annotate().order_by("price")
105
else:
106
products = products.annotate().order_by("productmatch__price")
107
filt["sorting"][1]["active"] = True
108
elif sorting_selected == filt["sorting"][2]["name"]:
109
filt["sorting"][2]["active"] = True
110
if retailer_pk:
111
products = products.order_by("pk")
112
else:
113
products = products.order_by("pk")
114
else:
115
if retailer_pk:
116
products = products.order_by("pk")
117
else:
118
products = products.order_by("pk")
119
else:
120
if retailer_pk:
121
products = products.order_by("pk")
122
else:
123
products = products.order_by("pk")
124
125
if brand_pk:
126
return render(request, 'page-brand-single.html', {
127
'products': products,
128
"sorting": filt["sorting"],
129
"filtering": filt["filtering"],
130
"brand": brand,
131
})
132
elif retailer_pk:
133
return (request, 'page-retailer-single.html', {
134
"products": products,
135
"sorting": filt["sorting"],
136
"filtering": filt["filtering"],
137
"retailer": retailer,
138
})
139
else:
140
return render(request, 'page-product-list.html', {
141
'products': products,
142
"sorting": filt["sorting"],
143
"filtering": filt["filtering"]
144
})
145
Advertisement
Answer
You are returning a tuple here:
JavaScript
1
8
1
elif retailer_pk:
2
return (request, 'page-retailer-single.html', {
3
"products": products,
4
"sorting": filt["sorting"],
5
"filtering": filt["filtering"],
6
"retailer": retailer,
7
})
8
Did you forget to add render
there perhaps:
JavaScript
1
8
1
elif retailer_pk:
2
return render(request, 'page-retailer-single.html', {
3
"products": products,
4
"sorting": filt["sorting"],
5
"filtering": filt["filtering"],
6
"retailer": retailer,
7
})
8