找不到页面。Django url浏览量

问题描述 投票:0回答:1

这是我第一次要在StackOverflow上问一些东西,我既兴奋又害怕,不知道为什么.我正在写一个Django应用,只是托管网帖。页面分为三(3)类(Index,lkmi和chiqung)。在index页面,你可以看到所有的帖子;在lkmi页面,你只能看到lkmi的帖子;在chiqung页面,你只能看到chiqung的帖子;所有这些都是由一个叫做 "index_page "的view控制的,它接收一个叫做 "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,不符合其中任何一个。"我在这里留下模型,视图和URLs。模型种类

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'),
]

索引页它加载志强页它加载LKMI页面它不加载...

如果我使用python manage.py shell,并寻找类别,使用 Category.objects.get(url='lkmi') 它返回所需的类别。基于 观点的评论,它 甚至没有进入视图功能因为在控制台中,它没有输出 "function index_page",尽管它是函数的第一行。

另外,如果我试着输入网址 "**127.0.0.1:8000lkmi",得到的结果是

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.0.1:8000whatever。"错误只是

No Categoria matches the given query.

所以在这种情况下,它进入函数,它给出了404错误,没有找到匹配的Category。我还是不明白,为什么当我尝试进入到 lkmi url...

非常感谢,希望有人能帮我解决这个问题,让我无法继续下去。

python django django-models django-views django-urls
1个回答
1
投票

你的类叫 "Category",但你调用了 get_object_or_404() 关于 "Categoria "的报告

观点应该是:

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})
© www.soinside.com 2019 - 2024. All rights reserved.