Возвращение более одной переменной при рендеринге в django
Я определяю home
запрос в views.py
,
db=client.inventory_data
def home(request):
collection_data_1 = db['orders']
mydata = list(collection_data.find())
return render(request,'home.html',{'mydata': mydata})
Приведенная выше функция работает нормально, но когда я пытаюсь вернуть еще один список, она не работает.
def home(request):
collection_data_1 = db['orders']
collection_data_2 = db['product']
mydata = list(collection_data_1.find())
product_data = list(collection_data_2.find())
return render(request,'home.html',{'mydata': mydata},{'product_data':product_data})
Я хочу вернуть оба списка, как этого добиться? Ищу доброй помощи.
def home(request):
# ...
return render(request,'home.html',{'mydata': mydata, 'product_data':product_data})
Вы можете просто объединить два словаря в один: {'mydata': mydata, 'product_data': product_data}
def home(request):
collection_data_1 = db['orders']
collection_data_2 = db['product']
mydata = list(collection_data_1.find())
product_data = list(collection_data_2.find())
return render(request,'home.html',{'mydata': mydata, 'product_data': product_data})
Причина, по которой он не работал, когда вы передавали два словаря отдельно, заключается в том, что render
принимает context
(словарь) в качестве третьего аргумента и content_type
(строку) в качестве четвертого аргумента, поэтому когда вы передавали два словаря, вы передавали словарь в качестве content_type
.
Если это поможет, вот что у вас было изначально с аннотированными именами переменных:
render(
request=request,
template_name='home.html',
context={'mydata':mydata},
content_type={'product_data':product_data},
)
И вот что у вас есть сейчас:
render(
request=request,
template_name='home.html',
context={'mydata': mydata, 'product_data': product_data}
)
def home(request):
collection_data_1 = db['orders']
collection_data_2 = db['product']
mydata = list(collection_data_1.find())
product_data = list(collection_data_2.find())
context = {
'mydata': mydata,
'product_data': product_data
}
return render(request,'home.html', context=context)