Django404s对简单页面感到困惑

2024-04-26 06:06:32 发布

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

我做了我的第一个Django网站自己经过几个教程,遇到了一些错误,我不知道是什么问题,因为他们是简单的页面请求。你知道吗

我试着做一个分类细节视图,例如127.0.0.1:8000/新闻,我遵循了与其他页面相同的设置,比如索引和帖子细节,它们工作得很好,但这是一个404。你知道吗

这是我的档案

models.py 

from django.db import models
from django.core.urlresolvers import reverse

class EntryQuerySet(models.QuerySet):
    def published(self):
        return self.filter(publish=True)

class Blog(models.Model):
    title = models.CharField(max_length = 200)
    slug = models.SlugField(max_length = 100, db_index = True)
    body = models.TextField()
    publish = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    category = models.ForeignKey('blog.category')

objects = EntryQuerySet.as_manager()


    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post_detail', kwargs={'slug':self.slug})


    class Meta:
        verbose_name = 'Blog entry'
        verbose_name_plural = 'Blog entries'
        ordering = ['-created']

class Category(models.Model):
    cat_title = models.CharField(max_length = 200, db_index = True)
    cat_slug = models.SlugField(max_length = 100, db_index = True)


    def __str__(self):
        return self.cat_title

    def get_absolute_url(self):
        return reverse('category_detail', kwargs={'cat_slug':self.cat_slug})

    class Meta:
        verbose_name = 'Category'
        verbose_name_plural = 'Categories'

你知道吗视图.py你知道吗

from django.views import generic
from . import models


class index_view(generic.ListView):
    queryset = models.Blog.objects.published()
    template_name = 'index.html'

class post_view(generic.DetailView):
    model = models.Blog
    template_name = 'post_view.html'

class category_view(generic.ListView):
    model = models.Category
    template_name = 'category_view.html'

class category_detail_view(generic.DetailView):
    model = models.Category
    template_name = 'category_detail_view.html'

class About_page(generic.DetailView):
    template_name = 'about.html'

应用程序网址.py你知道吗

from django.conf.urls import url
from django.contrib import admin
from . import views



urlpatterns = [

    url(r'^$', views.index_view.as_view(), name='index'),
    url(r'^categories/$', views.category_view.as_view(), name='category_detail'),
    url(r'^(?P<slug>\S+)$', views.post_view.as_view(), name='post_detail'),
    url(r'^(?P<cat_slug>\S+)$', views.category_detail_view.as_view(), name='category_detail_view'),
   url(r'^about/$', views.About_page.as_view(), name='about'),

这是“类别详细信息”页的“类别详细信息”_查看.html'

{% extends 'base.html' %}

{% block title %} The category detail view page {% endblock %}

{% block category_detail %}
    {% for cat_title in object_list %}
        <ul>
            <li>{{ category.cat_title }}</li>

    {% endfor %}
        </ul>

{% endblock %}

还有关于页面

{% extends 'base.html' %}

<h2>This is the about page</h2>

这两个页面都返回此错误消息

找不到页面(404) 请求方法:GET 请求URL:http://127.0.0.1:8000/about/ 提出人:blog.views.post\视图 找不到与查询匹配的博客条目

我不明白你为什么blog.post\u视图当这些模板都不引用post\视图时,将引发。你知道吗

我有一个索引页面列出了所有已发布的文章,一个类别页面列出了所有类别,还有一个帖子详细信息页面,所有这些都很好地工作,几乎与这些视图和模板完全相同。你知道吗


Tags: namefromselfviewurlmodelshtml页面
1条回答
网友
1楼 · 发布于 2024-04-26 06:06:32

当Django解析url /about/时,它会按顺序遍历您的url模式。它匹配post_detailurl模式,因此运行post_view,将about视为slug。因为没有任何带有slugabout的post,所以会出现404错误。你知道吗

一种解决方案是将abouturl模式移到post_detail模式之上。您还应该更改category url模式,否则它将不起作用。例如,您可以执行以下操作:

url(r'^about/$', views.About_page.as_view(), name='about'),
url(r'^(?P<slug>\S+)$', views.post_view.as_view(), name='post_detail'),
url(r'^categories/(?P<cat_slug>\S+)$', views.category_detail_view.as_view(), name='category_detail_view'),

相关问题 更多 >