2015-01-22 4 views
1

내 django 블로그 앱 프로젝트에서 slugified URL을 사용하여 페이지에 액세스하려고합니다. Django 문제가 발생했습니다. URL : NoReverseMatch at/

문제 템플릿 코드는 모습입니다 :

  {% for post in latest_post_list %} 
    <li><a href="{% url 'blog:view_post' post.title_text|slugify %}">{{post.title_text}}</a>&nbsp;{{post.pub_date}}</li> 

이 내 URL 경로가 모습입니다 같은 :

url(r'^(?P<post_name>)/$', views.view_post, name='view_post')) 

이 내보기 기능이 모습입니다 같은 :

def view_post(request, post_name): 
pdb.set_trace() 
try: 
    post_name = post_name.encode('ascii','ignore') #un-unicode name 

    unslugified_post_name = post_name.replace('-', ' ') #will get slugified name, replace all hyphens with spaces 
    post = Post.objects.get(title_text=unslugified_post_name) 


except Post.DoesNotExist: 
    raise Http404("Post does not exist") 

return render(request, 'blog/posts.djhtml', {'post': post}) 

그리고 이것은받은 오류에 대한 스택 추적입니다.

012 3,516,
Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/ 

Django Version: 1.7.3 
Python Version: 2.7.3 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'blog') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Template error: 
In template /home/andrew/projects/heroku-blog/My-Django-Blog/blog/templates/blog/index.djhtml, error at line 53 
    Reverse for 'view_post' with arguments '(u'lorem-ipsum',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'blog/(?P<title_text>)/$'] 
    43 :  <h5><a href="/blog/">Programmer Plebeian</a></h5> 


    44 :  </div> 


    45 :  {{navbar|safe}} 


    46 :  </div> 


    47 :  </div> 


    48 :  <div class="row"> 


    49 :  <div id="postindex" class="eleven columns"> 


    50 :   <ul> 


    51 :   {% if latest_post_list %} 


    52 :   {% for post in latest_post_list %} 


    53 :   <li><a href=" {% url 'blog:view_post' post.title_text|slugify %} ">{{post.title_text}}</a>&nbsp;{{post.pub_date}}</li> 


    54 :   {% endfor %} 


    55 :  </ul> 


    56 :   {% else %} 


    57 :  <p>There is no blog post available here</p> 


    58 :   {% endif %} 


    59 :  </section> 


    60 :  </div> 


    61 :  </div> 


    62 : </div> 


    63 : 


Traceback: 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/blog/views.py" in index 
    13.  return render(request, 'blog/index.djhtml', context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/shortcuts.py" in render 
    50.  return HttpResponse(loader.render_to_string(*args, **kwargs), 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/loader.py" in render_to_string 
    178.   return t.render(context_instance) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/base.py" in render 
    148.    return self._render(context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/base.py" in _render 
    142.   return self.nodelist.render(context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/base.py" in render 
    844.     bit = self.render_node(node, context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    80.    return node.render(context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    312.     return nodelist.render(context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/base.py" in render 
    844.     bit = self.render_node(node, context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    80.    return node.render(context) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    201.        nodelist.append(node.render(context)) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    458.       six.reraise(*exc_info) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    444.    url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in reverse 
    551.  return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) 
File "/home/andrew/projects/heroku-blog/My-Django-Blog/venv/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix 
    468.        (lookup_view_s, args, kwargs, len(patterns), patterns)) 

Exception Type: NoReverseMatch at/
Exception Value: Reverse for 'view_post' with arguments '(u'lorem-ipsum',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'blog/(?P<title_text>)/$'] 

이 오류를 일으키는 필드의 값은

내가 문제가 경로 정규 표현식에 아마 알고있다 "로렘 입숨"입니다,하지만 난 그것을 위해 적절한 정규 표현식을 알아내는 데 문제가 , 나는 그들에게 새로운 사람이다. 내가 지금하고있는 일은 그것이 어떻게 생겼는지에 관계없이 전달 된 문자열을 얻는 것뿐입니다. 그러나 당신이 저에게 더 튼튼한 것을 보여주고 싶다면, 나는 매우 감사 할 것입니다.

또한, slugify가 유니 코드 문자열을 반환하지 못하도록하는 방법이 있습니까?

답변

3

view_post에 대한 귀하의 정규식은 비어 있습니다.

url(r'^(?P<post_name>[\w-]+)/$', views.view_post, name='view_post') 
+0

Btw, '\ w'는 밑줄을 정의 (영숫자 + 밑줄)로 일치하므로 추가 언급 할 필요가 없습니다. 그걸 제외하고 나는 이것이 문제 (적어도 첫 번째 문제)라고 확신한다. tak privet Habarovsk :) – alecxe

+0

죄송합니다! 당신 말이 맞아요. 자주 사용되는 '[a-z _-]'정규식에서 얻은 근육질의 기억입니다. Vzaimniy privet, NY. – catavaran

+0

시도한 후에 오류가 발생했습니다. 인수 '(u'lorem-ipsum',) '및'{} '이 (가)없는 키워드 인수'view_post '를 역순으로 검색합니다. 1 패턴을 시도했습니다 : –

관련 문제