Chce aby użytkownik po dodaniu posta na blog i przeniesieniu na stronę gdzie wyświetla się treść nie miał możliwości z powrotem wrócić do strony tworzenia. Wiem że mogę taki efek osiągnąć używając sesji. Umiem zrobić sesję w zwykłm widoku tworzonym z funkcji ale ja używam widoków klasowych. Zwykłe request.sessions nawet osadzone w funkcji dispatch czy get nie działa. Próbowałem też użyć api do zarządzanie sesjami poza widokiem , ale tutaj z kolei dostaje błąd taki jak poniżej. Co mam zrobić żeby to działało?
Błąd
DoesNotExist at /post/10/
Session matching query does not exist.
Request Method: GET
Request URL: http://127.0.0.1:8000/post/10/
Django Version: 4.1.7
Exception Type: DoesNotExist
Exception Value:
Session matching query does not exist.
Exception Location: D:\Python\lib\site-packages\django\db\models\query.py, line 650, in get
Raised during: blog.views.PostDetailView
Python Executable: D:\Python\python.exe
Python Version: 3.9.13
Kod
class PostDetailView(DetailView):
model = Post
def dispatch(self, request, *args, **kwargs):
session = Session.objects.get(pk='my_key')
return super(DetailView, self).dispatch(request, *args, **kwargs)
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['title', 'content']
def dispatch(self, request, *args, **kwargs):
s = SessionStore(session_key='my_key')
s['filled'] = True
s.create()
return super(CreateView, self).dispatch(request, *args, **kwargs)
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)