查找页面时遇到问题.Django url / views.



这是我第一次在StackOverflow问一些事情,我既兴奋又害怕,我不知道为什么。 我正在编写一个只托管网络帖子的 Django 应用程序。该页面分为三 (3( 个类别(索引、lkmi 和 chiqung(。每个帖子都有一个类别(lkmi 或 chiqung(。 在索引页面上,您可以看到所有帖子。 在LKMI页面上,您只能看到LKMI帖子。 在 CHIQUNG 页面上,您只能看到 chiqung 帖子。 所有内容仅由一个名为"index_page"的视图控制,该视图接收一个名为"cat"的参数,该参数是来自其中一个类别(index,lkmi,chiqung(的URL。基于此,它决定了要加载的帖子。

*现在的问题 *

我找不到原因,但我只是在加载 lkmi 部分时遇到问题。索引页和chiqung_page加载完美,但我有一个

"Page Not Found (404)
Request Method: GET
Request URL:   http://127.0.0.1:8000/lkmi/

使用 blog.urls 中定义的 URLconf,Django 尝试了这些 URL 模式,顺序如下:

admin/
<cat> [name='index_page']
post/<int:pk> [name='post_detallado']
^ckeditor/

当前路径 lkmi/与其中任何一个都不匹配。 " 我将把模型、视图和网址留在这里。模型类别

class Category(models.Model):
name = models.CharField(max_length=50)
presentation = RichTextUploadingField(default='')
order = models.IntegerField(null=True)
url = models.CharField(max_length=50,default='',null=False,blank=True)
class Meta:
verbose_name = ("Categoria")
verbose_name_plural = ("Categorias")
def __str__(self):
return self.name
def get_postes(self):
print('Entre get_postes')
if self.url == '/':
return Post.objects.all().order_by('-published_date')
else:
return Post.objects.filter(category=self.pk).order_by('-published_date')

发布

class Post(models.Model):
title = models.CharField(('Titulo'),max_length=50)
category = models.ForeignKey("core.Category", verbose_name=("Categoria"), null=True, on_delete=models.CASCADE)
creation_date = models.DateTimeField(auto_now = True)
published_date = models.DateTimeField(auto_now=False, auto_now_add=False)
content = RichTextUploadingField()
author = models.CharField(("Autor/a"), max_length=50, default='El Autor')
class Meta:
verbose_name = ("Post")
verbose_name_plural = ("Postes")
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("_detail", kwargs={"pk": self.pk})

处理分类的视图

def index_page(request, cat):
print('function index_page')
print('cat ='+str(cat))
category = get_object_or_404(Category,url=cat)
print('get_object_or_404(Category,url=cat). Executed')
print(str(category))
postes = category.get_postes()
print('category.get_postes(). Executed')
return render(request, 'index.html',{'postes': postes,
'category': category})

应用程序中的网址文件

urlpatterns = [
path('admin/',admin.site.urls),
path('<cat>', views.index_page, name='index_page'),
path('post/<int:pk>', views.detailed_post, name='detailed_post'),
]

它加载的索引页赤孔页面它加载利克米页面它不加载...

如果我使用 python manage.py shell 并使用Category.objects.get(url='lkmi')查找类别,它会返回所需的类别。根据视图的注释,它甚至不会进入视图函数,因为在控制台中它不会输出"函数index_page",即使它是函数的第一行。

另外,如果我尝试网址"**127.0.0.1:8000/lkmi",它会给出

Using the URLconf defined in blog.urls, Django tried these URL patterns, in this order:
1. admin/ - 
2. <cat> name='index_page'] - 
3. post/<int:pk> [name='post_detallado']. 

但是如果我只输入">127.0.0.1:8000/任何",错误只是

No Categoria matches the given query.

因此,在这种情况下,它进入了函数,并给出了找不到匹配类别的 404 错误。我仍然不明白为什么当我尝试输入lkmiurl 时它不执行视图。

非常感谢,我希望有人可以帮助我,所以我不能继续下去。

你的类被称为"类别",但你在"分类"上调用get_object_or_404()

视图应为:

def index_page(request, cat):
categoria = get_object_or_404(Category,url=cat)
postes = categoria.get_postes()
return render(request, 'index.html',{'postes': postes,
'categoria': categoria})

最新更新