Django:创建帖子时未找到与查询匹配的帖子

Django:创建帖子时未找到与查询匹配的帖子,django,http-status-code-404,slug,Django,Http Status Code 404,Slug,我刚用django autoslug让Slug为我的Post模型工作。但我现在在尝试创建新帖子时遇到了以下错误: Page not found (404) Request Method: GET Request URL: http://localhost:8000/post/new/ Raised by: blog.views.PostDetailView No post found matching the query 后模型 class Post(models.Mod

我刚用django autoslug让Slug为我的Post模型工作。但我现在在尝试创建新帖子时遇到了以下错误:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/post/new/
Raised by:  blog.views.PostDetailView
No post found matching the query
后模型

       class Post(models.Model):
            
            title = models.CharField(max_length=100)   
            author = models.ForeignKey(User, on_delete=models.CASCADE)
            slug = AutoSlugField(populate_from='title', null=True)
        
            def save(self, *args, **kwargs):
                self.slug = self.slug or slugify(self.title)
                super().save(*args, **kwargs)
            
            def get_absolute_url(self):
            return reverse('post-detail', kwargs={'slug': self.slug, 'author': self.author})
views.py

class PostDetailView(DetailView):

    model = Post

    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).filter(author__username=self.kwargs['author']) 
url.py

urlpatterns = [

    path('', views.home, name='blog-home'),
    path('<str:author>/<slug:slug>/', PostDetailView.as_view(), name='post-detail')
    path('post/new/', PostCreateView.as_view(), name='post-create'),
    path('<str:author>/<slug:slug>/update/', PostUpdateView.as_view(), name='post-update'),
    path('<str:author>/<slug:slug>/delete/', PostDeleteView.as_view(), name='post-delete'),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns=[
路径(“”,views.home,name='blog-home'),
路径('/',PostDetailView.as_view(),name='post-detail')
路径('post/new/',PostCreateView.as_view(),name='post-create'),
路径('//update//',PostUpdateView.as_view(),name='post-update'),
路径('//delete//',PostDeleteView.as_view(),name='post-delete'),
]+静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)

如果您请求
/post/new
URL,那么这将与
post detail
视图匹配,因为它可以将
post
作者匹配,将
new
slug
匹配

您应该重新排列url模式,使其首先与
post create
视图相匹配:

urlpatterns = [
    path('', views.home, name='blog-home'),
    path('post/new/', PostCreateView.as_view(), name='post-create'),
    path('<str:author>/<slug:slug>/', PostDetailView.as_view(), name='post-detail')
    path('<str:author>/<slug:slug>/update/', PostUpdateView.as_view(), name='post-update'),
    path('<str:author>/<slug:slug>/delete/', PostDeleteView.as_view(), name='post-delete'),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns=[
路径(“”,views.home,name='blog-home'),
路径('post/new/',PostCreateView.as_view(),name='post-create'),
路径('/',PostDetailView.as_view(),name='post-detail')
路径('//update//',PostUpdateView.as_view(),name='post-update'),
路径('//delete//',PostDeleteView.as_view(),name='post-delete'),
]+静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
通过首先指定
post create
视图,如果用户访问
/post/new/
,它将触发
post create
视图


这也意味着一个名为
post
的作者不能写一篇名为
new
的文章,因为它不会触发
post detail
视图。

我有点受骗了,但我抛弃了slug,我让我的网站去了tachlis.herokuapp.com/item_id/title_slug(例如),然后我的url.py是“int:pk/str:pkv/”,我使用项目id(“pk”)来获取正确的项目,而不是slug