2016-07-11 52 views
0

Im做我的第一個Django的網站我通過幾個教程將會運行到我想不通的是什麼問題,因爲它們是簡單的頁面請求的一些錯誤後,通過困惑Django的404。簡單的網頁

我試圖讓一個類別詳細視圖例如127.0.0.1:8000/news和香港專業教育學院遵循相同的設置其他頁面,如指數和細節後已經工作得很好,但是這是給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' 

應用urls.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'), 

這是類別詳細信息頁「category_d etail_view.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_view 沒有博客條目中找到匹配查詢

我不明白爲什麼'blog.post_view'被引發時,這些模板都沒有引用post_view。

我有上市發佈的所有職位,其中列出所有類別和職位詳細信息頁面所有這些做工精細,並幾乎完全一樣,這些意見和模板類別頁面的索引頁。

+0

你可以給你的項目pls的urls.py? – Gaetan

回答

6

當Django解析URL /about/,它通過你的URL模式秩序。它匹配post_detail url模式,因此運行post_view,將about視爲slug。由於您沒有slu 012 about的任何帖子,您會收到404錯誤。

一個解決方案是移動post_detail圖案上方的about 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'), 
+0

好的,謝謝,關於個人分類頁面,但是我不想在網址中的'類別'?例如'mysite.com/food'而不是'mystic.com/categories/food'? –

+1

這真是一個單獨的問題 - 這是一個棘手的問題。其中一種選擇是創建一個視圖,該視圖使用哨子和檢查帖子和類別。你可以試試[django-multiurl](https://github.com/raiderrobert/django-multiurl)包。 – Alasdair

+0

謝謝我會檢查出來! –