管理站点无法正常工作并抛出关于其中一个视图的错误,但视图仍在工作 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
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