【发布时间】:2022-08-19 04:01:14
【问题描述】:
我有这些网址模式:
app_name = \"posts\"
urlpatterns = [
path(\'global/\', PostListView.as_view(), name=\'global-list\'),
path(\'personal/\', PersonalPostListView.as_view(), name=\'personal-list\'),
path(\'<int:pk>/\', PostDetailView.as_view(), name=\'detail\'),
path(\'<int:pk>/delete/\', PostDeleteView.as_view(), name=\'delete\'),
]
在 PostListView、PersonalPostListView 和 PostDetailView 的每个模板中都有一个删除选项,如下所示:
<a href=\"{% url \'posts:delete\' object.id %}\">Delete</a>
我想要发生的是在删除对象后,它将重定向到单击删除链接的最后一页(详细视图除外)。因此,有以下 3 种可能的情况:
- 案例1:PostListView模板->点击删除->PostDeleteView确认删除模板->返回PostListView模板
- 案例2:PersonalPostListView模板->点击删除->PostDeleteView确认删除模板->返回PersonalPostListView模板
- 案例 3 (例外): PostDetailView 模板 -> 点击删除 -> PostDeleteView 确认删除模板 -> 返回 PostListView 模板
此外,PostListView 和 PersonalPostListView 是分页的,并且 PostDeleteView 应该返回到删除帖子的页面。
到目前为止,这是我的尝试:
class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView): model = Post def get_success_url(self): return self.request.META.get(\'HTTP_REFERER\')但是,单击 PostListView 中的删除会返回
posts/15/delete/,它应该只是posts/global/。此外,如果从 PersonalPostListView 模板中删除,它应该返回posts/personal/并且 (例外)posts/global/如果从 PostDetailView 模板中删除。我想到的另一种方法是为每个模板分配不同的 DeleteViews(具有不同的 success_url)。但是,当只有success_url 应该不同时,这似乎会导致代码中的一些冗余。