2016-07-11 2 views
0

몇 가지 자습서를 거쳐 간단한 페이지 요청이므로 문제가 무엇인지 파악할 수없는 몇 가지 오류가 발생하여 직접 처음 Django 사이트를 수행하고 있습니다.간단한 페이지 Django 404s에 혼란이 있음

예를 들어 카테고리 세부 정보를 만들려고했습니다. 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' 

들이다주고 같은 인덱스 및 사후 세부 다른 페이지와 같은 설정을 따라 평

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' 

이 카테고리 세부 정보 페이지입니다

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

응용 프로그램 urls.py 'category_d 이 페이지 모두이 오류 메시지가

페이지를 반환

{% extends 'base.html' %} 

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

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

과에 대한 페이지는 (404) 요청 방법을 찾을 수 없습니다 요청 URL을 GET : http://127.0.0.1:8000/about/ 제기자 : blog.views.post_view 검색어와 일치하는 블로그 항목이 없습니다.

나는이 템플릿이 post_view를 참조하지 않을 때 왜 'blog.post_view'가 발생하는지 이해하지 못합니다.

게시 된 모든 게시물이 나열된 색인 페이지, 나열된 모든 카테고리가있는 카테고리 페이지 및 세부 정보 페이지가 모두 올바르게 작동하고 이러한보기 및 템플릿과 거의 동일합니다.

+0

프로젝트 pls의 urls.py를 줄 수 있습니까? – Gaetan

답변

6

장고가 URL /about/을 해결하면 URL 패턴을 순서대로 처리합니다. post_detail URL 패턴과 일치하므로 about을 슬러그로 처리하고 post_view을 실행합니다. 슬러그 about에 대한 게시물이 없기 때문에 404 오류가 발생합니다.

하나의 해결책은 post_detail 패턴 위의 about URL 패턴을 이동하는 것입니다. 카테고리 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

괜찮아요, 개별 카테고리 페이지에 대해 고마워요. 내가 URL에서 '카테고리'를 원한다면 어떨까요? 예 : 'mystic.com/categories/food'대신 'mysite.com/food'를 사용 하시겠습니까? –

+1

그건 별개의 질문입니다. 까다로운 문제입니다. 하나의 옵션은 슬러그를 취하고 게시물 및 카테고리를 확인하는보기를 만드는 것입니다. [django-multiurl] (https://github.com/raiderrobert/django-multiurl) 패키지를 사용해보십시오. – Alasdair

+0

감사합니다. –

관련 문제