管理站点无法正常工作并抛出关于其中一个视图的错误,但视图仍在工作 django

Admin site is not working and throwing Error about one of the views but views are still working django

This is the Error it is throwing Plz check

I am trying to get the posts related to certain tag and I did that but when I accessing admin panel it is showing on posts_tag view, I am not able to debug that why it is related to admin panel

    class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User,on_delete=models.CASCADE)
    tags = models.ManyToManyField('Tag',through='Tagged')
    class Meta:
        ordering=['-date_posted']
    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail',kwargs={'pk':self.pk})
`class Tag(models.Model):
    name=models.CharField(max_length=50)
    posts = models.ManyToManyField('Post',through='Tagged')

    def __str__(self):
        return self.name
class Tagged(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE)
    tag = models.ForeignKey(Tag,on_delete=models.CASCADE)

urls.py

urlpatterns=[
path('',views.post_list,name='blog-home'),
path('<tag>/',views.post_tag,name='blog-tag'),
path('post/<int:pk>/',views.post_detail,name='post-detail'),
path('post/new/',views.post_create,name='post-create'),
path('post/<int:pk>/update/',views.post_update,name='post-update'),
path('post/<int:pk>/delete/',views.post_delete,name='post-delete'),
path('about/',views.about,name='blog-about')]

views.py

def post_tag(request,tag):
    t=Tag.objects.get(name=tag).posts.all()
    tags = Tagged.objects.all()
    return render(request,'blog/home.html',context={'posts':posts,'tags':tags})`

在您的 settings.py 文件中确保 ROOT_URLCONF 指向您的主 url 模式文件(一个 urls.py 文件),并添加行 path('admin/', admin.site.urls) 到图案。

urlpatterns=[
    # This line should point correctly to the admin site (/admin)
    path('admin/', admin.site.urls),

    path('',views.post_list,name='blog-home'),
    path('<tag>/',views.post_tag,name='blog-tag'),
    path('post/<int:pk>/',views.post_detail,name='post-detail'),
    path('post/new/',views.post_create,name='post-create'),
    path('post/<int:pk>/update/',views.post_update,name='post-update'),
    path('post/<int:pk>/delete/',views.post_delete,name='post-delete'),
    path('about/',views.about,name='blog-about')]

因为 Django 默认不实现管理站点,如果你不实现 url 模式,将找不到管理站点,你会得到这样的错误。

实际上您正在尝试使用 admin url 但您没有在 urls.py

中提供 admin url

如果您想使用 admin url,那么您应该在 urls.py 中提供 admin url,如下所示...

path('admin/', admin.site.urls)

在你的情况下,你实际做的是你没有提供管理员 url 但你仍然在尝试 localhost:8000/admin/ 所以,它会从你的 [=35= 下面调用 url ]

path('<tag>/',views.post_tag,name='blog-tag')

因为,根据您的逻辑,如果您在 localhost:8000 之后提供任何单词,它将捕获为 <tag> 并调用 views.post_tag,并且根据您在 post_tag view 中的逻辑你会得到 admin 作为 tag 名称并在 Tag model 中找到它但是在你的标签模型中没有任何名为 admin 的标签所以它抛出错误...... Tag matching query is does not exist