首页 > 解决方案 > 即使定义了视图、模板和 URL 配置,在 /posts 也找不到页面

问题描述

我正在构建一个简单的博客应用程序并尝试在 URL 中使用 slugs。我已经定义了 URL 以及视图和模板,但是当我尝试访问 URL /blog/posts 时,它也会从完全不同的视图中抛出 404。所有其他 URL 都可以工作,只是上面提到的 URL 有问题。

网址.py

 urlpatterns = [
    path('',views.IndexView.as_view(),name='index'),
    path('create/',views.PostCreateView.as_view(),name='blog-create'),
    path('posts/',views.UserPosts.as_view(),name='user-posts'),
    path('<slug:slug>',views.PostDetailView.as_view(),name='blog-detail'),
    path('list/',views.PostListView.as_view(),name='blog-list'),
    path('<slug:slug>/comment/',views.create_comment,name='comment'),
]

按顺序关联的视图

class PostDetailView(LoginRequiredMixin,generic.DetailView):
    model = Post
    template_name = 'blog/post_detail.html'
    context_object_name = 'post'
    slug_url_kwarg = 'slug'
    slug_field = 'slug'

class UserPosts(LoginRequiredMixin,generic.ListView):
    model = Post
    context_object_name = 'posts'
    template_name = 'blog/user_post_list.html'

    def get_queryset(self):
        posts = super().get_queryset()
        queryset = posts.objects.all(user= self.request.user)
        return queryset

404错误

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/blog/posts
Raised by:  blog.views.PostDetailView
No post found found matching the query

模板目录树

blog/
   templates/
            blog/
                user_post_list.html

同样早些时候我也遇到了 path('/list') 的问题,但是当我从 slug URL 中删除 '/' 时它得到了解决,我不知道它为什么会起作用,谁能解释一下?

标签: pythondjangodjango-views

解决方案


推荐阅读