Django: never_cache не работает, он все еще показывает те же данные при нажатии кнопки "Назад" в браузере
У меня есть представление create, которое используется для создания объекта типа Course(model). Я использую декоратор never_cache, чтобы перезагружать страницу с сервера каждый раз, когда я ее использую. Теперь, если я создаю курс, он добавляется в базу данных Course, теперь, если я нажимаю кнопку назад в браузере, он все еще показывает мне данные с названием курса, которые я написал, что позволяет мне повторно отправить те же данные, как я могу предотвратить это? (я могу предотвратить сохранение одних и тех же данных дважды, переопределив метод сохранения, но я хочу предотвратить возврат пользователя к форме, в которой он ввел данные).
@method_decorator(never_cache, name='dispatch')
class CourseView(CreateView):
model = Course
template_name = 'teacher/course.html'
fields = ['name', 'year']
def get_context_data(self, **kwargs):
kwargs['course_list'] = self.model.objects.all().order_by('name','year')
return super().get_context_data(**kwargs)
def form_valid(self, form):
messages.success(self.request, 'Course added successfully.')
return super().form_valid(form)
def get_success_url(self):
return self.request.GET.get(key='next', default=reverse('teacher:course'))
never_cache
работает нормально для запросов в будущем. если вы откроете CourseView
снова, вы получите новые данные.
Не забывайте: При навигации по истории браузера он восстанавливает страницы, используя данные, кэшированные в состоянии истории браузера (запросы в прошлом). Если вы действительно хотите изменить результат нажатия кнопки "Назад" в браузере - вы должны взаимодействовать с состоянием истории браузера.