查找页面出现问题。Django url/视图

2024-10-03 17:27:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

*现在问题来了*

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

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

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

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

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

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})

应用程序中的URL文件

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

索引页It loads奇群页面It loadsLKMI页面It doesn't load...

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

另外,如果我尝试url“**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时它不执行视图

非常感谢,我希望有人能帮我,这样我就不能继续了


Tags: nameself视图urlgetindexmodelspage
1条回答
网友
1楼 · 发布于 2024-10-03 17:27:07

您的类被称为“Category”,但您在“Categoria”上调用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})

相关问题 更多 >