#python #django #model
#python #django #Модель
Вопрос:
Я сохранил и идентификатор объекта в сеансе, и я получаю идентификатор для запроса и отображения значений этой модели, после удаления идентификатора из сеанса значения этой модели все еще отображаются в шаблоне после перезагрузки страницы, как я могу это остановить? вот мой код
def dashboard(request):
customer_form = CustomerInfoForm()
form = TransactionForm(initial={'tax':0,'price':0, 'price_per_item':0})
if 'id' in request.session:
id = request.session['id']
print('Id in dashboard is ', id)
order = Order.objects.get(pk=id).item_set.all()
sum_of_price = order.aggregate(Sum('price'))
#Get sum of all item prices.
if sum_of_price :
context['price'] = sum_of_price['price__sum']
context['current_order'] = Order.objects.get(pk=id).item_set.all()
context['form'] = form
context['customer_form'] = customer_form
return render(request, 'main/dashboard.html', context)```
In the second view i am deleting the id and when i reload the page the first view still query and render values to the page,
```@csrf_exempt
def add_order_as_credit(request):
try:
price = request.POST.get('price')
id = request.session.get('id')
order = Order.objects.get(pk=id)
order.price = price
order.save()
print('Id is ', request.session['id'])
print('Price is ' price)
del request.session['id']
return JsonResponse('Order has been set as credit', safe=False)
except (KeyError, Order.DoesNotExist):
return JsonResponse('There is no order ', safe=False)```
Ответ №1:
В некоторых случаях требуется явно пометить сеанс как измененный:
del request.session['id']
request.session.modified = True
Смотрите документы Django о сеансах.
Комментарии:
1. Спасибо за быстрые ответы, где я должен установить это в первом или втором представлении? Спасибо
2. Смотрите мою правку. Дайте мне знать и отметьте как правильные, если это работает.
3. Он все еще отображает объекты после удаления сеанса
4. Это исчезнет, только если я перезапущу сервер
5. Хм, может быть, идентификатор слишком общий? Попробуйте
item_id
и дайте мне знать. Мне также интересно, можете ли вы изменять переменные сеанса, когда вы не возвращаетесьrequest
в ответе.