This is my last brain cell speaking.
I have a model called Post with title, body, author, logo and pub_date fields.
There is a page in my app that the user can Update/Edit the post. I want the user to be redirected to the Post's Detail page if they tried to access it without being logged in.
The problem is that I can't reference the Post's pk to redirect the user to the related page, If I want to put it simply:
the user trying to access .../2/edit/
will be redirected to .../2/
if they aren't logged in
I Tried using LoginRequiredMixin to block the user but I can't redirect the user to the relative details page.
urls.py:
urlpatterns = [
path('', PostListView.as_view(), name='index'),
path('<int:pk>/', PostDetailView.as_view(), name='details'),
path('new/', PostCreateView.as_view(), name='new_post'),
path('<int:pk>/edit', PostUpdateView.as_view(), name='update_post'),
]
views.py:
class PostUpdateView(LoginRequiredMixin, UpdateView):
model = Post
login_url = reverse_lazy('details', args=[self.object.pk,])
form_class = PostUpdateForm
template_name = "posts/update_post.html"
I also tried:
class PostUpdateView(LoginRequiredMixin, UpdateView):
def get_login_url(self) -> str:
super().get_login_url()
UpdateView.get(self, self.request)
self.login_url = reverse_lazy('details', args=[self.object.pk,])
model = Post
form_class = PostUpdateForm
template_name = "posts/update_post.html"
But it returns an empty/none value
Is LoginRequiredMixin even the right way to do this?
I know this can easily be achieved without GenericViews/UpdateView just by getting the request and handling it ourselves, But isn't GenericViews supposted to get the job done easier?
source https://stackoverflow.com/questions/73388566/django-redirect-unauthenticated-user-trying-to-access-updateview-to-detailview
Comments
Post a Comment