Django NoReverseMatch [英] Django NoReverseMatch

查看:124
本文介绍了Django NoReverseMatch的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不明白有什么问题吗?我试图制作一个项目的详细页面,例如 http:// tutorial。 djangogirls.org/en/extend_your_application/index.html
它在我的项目中不起作用,但在练习中,一切都很好。



错误讯息: NoReverseMatch at /

 反向'events.views.event_detail'与参数'()'和关键字参数'{u'pk':3}'未找到。 1个模式尝试:['$ event /(?P< pk> [0-9] +)/ $'] 

HTML(片段)

 < div class =col -xs-6>< a class =btn btn-primaryhref ={%url'events.views.event_detail'pk = event.pk%}>阅读更多< / a>< / DIV> 
< / div>

settings.py

  ROOT_URLCONF ='mysite.urls'

app urls.py

  from django.conf.urls import include,url 
from。导入视图

urlpatterns = [
url(r'^ $',views.events_list),
url(r'^ event /(?P< pk> [0- 9] +)/ $',views.event_detail),
]

app view.py

  from django.shortcuts import render,get_object_or_404 
from django.utils import timezone
from .models import Event

def events_list(request):
events = Event.objects.filter(published_date__lte = timezone.now())。order_by('published_date')
return render(request,'events / events_list.html',{'events':events})

def event_detail(request,pk):
event = Event.objects .get(pk = pk)
return render(request,'events / event_detail.html',{'event':event})


解决方案

你没有显示你的mysite.urls,但是从错误消息看,你已经做了这样的事情:

 (r'^ events / $',include('events.urls')),

你需要删除终止$因为这意味着正则表达式的结束;没有什么可以匹配之后。它应该是:

 (r'^ events /',include('events.urls')),

请注意,您还应该提供事件URL名称,以便更容易参考:

  url(r'^ $',views.events_list,name ='events_list'),
url(r'^ event /(?P< ; pk> [0-9] +)/ $',views.event_detail,name ='event_detail'),

,以便您现在可以执行以下操作:

  {%url'event_detail'pk = event.pk%} 


I can't understand what's wrong? I tried to make a detail page of one item, like in example on http://tutorial.djangogirls.org/en/extend_your_application/index.html and It doesn't work in my project, but In exercises everything was good.

Error message: NoReverseMatch at /

Reverse for 'events.views.event_detail' with arguments '()' and keyword arguments '{u'pk': 3}' not found. 1 pattern(s) tried: ['$event/(?P<pk>[0-9]+)/$']

HTML(fragment)

<div class="col-xs-6"><a class="btn btn-primary" href="{% url 'events.views.event_detail' pk=event.pk %}">Read more</a></div>
         </div>

settings.py

ROOT_URLCONF = 'mysite.urls' 

app urls.py

from django.conf.urls import include, url
from . import views

urlpatterns = [
    url(r'^$', views.events_list),
    url(r'^event/(?P<pk>[0-9]+)/$', views.event_detail),
]

app views.py

from django.shortcuts import render, get_object_or_404
from django.utils import timezone
from .models import Event

def events_list(request):
    events = Event.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'events/events_list.html', {'events': events})

def event_detail(request, pk):
    event = Event.objects.get(pk=pk)
    return render(request, 'events/event_detail.html', {'event': event})

解决方案

You haven't shown your mysite.urls, but from the error message it looks like you have done something like this:

(r'^events/$', include('events.urls')),

You need to drop the terminating $, since that means the end of the regex; nothing can match after that. It should be:

(r'^events/', include('events.urls')),

Note that you should also give your event URLs names, to make it easier to reference:

url(r'^$', views.events_list, name='events_list'),
url(r'^event/(?P<pk>[0-9]+)/$', views.event_detail, name='event_detail'),

so that you can now do:

{% url 'event_detail' pk=event.pk %}

这篇关于Django NoReverseMatch的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆