2014-04-16 1 views
0

하지 않고 뭔가가 여기 내 views.py의 내 주요 urls.py장고 슬러그 URL을 변경하지만 장고의 블로그를 구축 상세보기

from django.conf import settings 
from django.conf.urls import patterns, include, url 

urlpatterns = patterns('', 
    url(r'$', 'posts.views.home'), 
    url(r'^(?P<slug>[\w-]+)/$', 'posts.views.single'), 
) 

을 일치하는 잘못된 생각

from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render_to_response, RequestContext, Http404, get_object_or_404 

from .models import Post 

def home(request): 
    posts = Post.objects.filter(private=False) 
    return render_to_response('all.html', locals(), context_instance=RequestContext(request)) 

def single(request, slug): 
    post = Post.objects.filter(slug=slug) 
    return render_to_response('single.html', locals(), context_instance=RequestContext(request)) 

함수 기반보기 홈은 완벽하게 작동하고 모든 비공개 게시물을 반환합니다. 그러나 단일보기는 올바른 슬러그 (예 : 127.0.0.1/this-correct-slug)를 만들기 위해 URL을 변경하지만 페이지 상단으로 이동하여 내용을 필터링하지 않습니다 (터미널에서 200 GET 요청 표시).). post = get_object_or_404(Post, slug=slug)을 사용하면 동일한 결과가 나타납니다.

나는 post = Post.objects.filter(slug=slug) 부분을 잘 모르고 있지만, 그다지 진전이 없다는 것을 알고 있습니다. 기능이 호출되는지 확인하기 위해 print 문을 추가하려고합니다.

나는 또한 약간의 인수가 확실하지 않다 locals(). 나는 데이터 사전을 사용하는 방법을 아직 확실히 모르기 때문에 솔직하게 말하면서 그것을 사용 해왔다.

템플릿 all.html 및 single.html이 올바른 것으로 가정합니다.

감사합니다.

답변

1

문제는 첫 번째 정규식이 루팅되지 않는다는 것입니다. 기본적으로 "끝나는 모든 문자열"을 의미하는 '$'와 일치합니다. 모든 것이 끝납니다. 따라서 모두 URL은 해당 패턴과 일치합니다.

^$ 즉, 빈 문자열이어야합니다.

+0

정규식 수업을해야합니다. 완벽 해, 고마워! –