Невозможно использовать значение из словаря в одном представлении Django в другом представлении Django (AttributeError: модуль 'urllib.request' не имеет атрибута 'session')

Я новичок в использовании Django. У меня есть функция в views.py, которая вычисляет прибыль и печатает ее на веб-странице в Django. Я храню прибыль в словаре по имени context, а затем сохраняю ее в сессии:

#We want to calculate hourly profit  
def profitmanagement(request):
    #Profit has already been computed
    context={'TotalHourlyProfit':TotalProfit} 
    #We will pass this dictionary to our ProfitManagement.html template. This will display our total profit.
    request.session['context'] = context #Save the dictionary using a session to use in another function
    return render(request,"ProfitManagement.html",context)

Теперь у меня есть другая функция, которая будет запускаться каждый час с помощью APScheduler. Она должна установить TotalHourlyProfit в ноль, а затем вывести его на веб-страницу. Она выглядит следующим образом:

#Sets the hourly profit to zero at each hour 
def ClearHourlyProfit():
       context = request.session.get('context') #Loads the dictionary computed in profitmanagement().  This is returning an error
       context['TotalHourlyProfit']=0 #Set the hourly profit to zero.
       #print("Hourly profit function has context:",context)
       return render(request,"ProfitManagement.html",context)

Возвращается ошибка: AttributeError: module 'urllib.request' has no attribute 'session'

Есть ли способ, с помощью которого я могу передать измененное значение TotalHourlyProfit на мою веб-страницу? Я буду очень благодарен любому, кто укажет мне правильное направление.

Заранее спасибо!

Вам необходимо передать request в качестве аргумента в функции ClearHourlyProfit(), так как это функция представления, а также использовать {} пустой дикт, если context не существует, так:

def ClearHourlyProfit(request):
    context = request.session.get('context', {})
    context['TotalHourlyProfit']=0
    request.session['context'] = context
    return render(request,"ProfitManagement.html",context)
Вернуться на верх