模板渲染期间的 Django 错误,因为 URL 标记



错误:

NoReverseMatch at /
    Reverse for 'detail' with arguments '(3,)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'$(?P<college_id>[0-9]+)/$']

错误位于此行:

<li><a href="{% url 'app:detail' college.id %}">{{ college.college_name }}</a></li>

以下是整个模板(索引.html):

{% if latest_college_list %}
<ul>
    {% for college in latest_college_list %}
    <li><a href="{% url 'app:detail' college.id %}">{{ college.college_name }}</a></li>
    {% endfor %}
</ul>
{% else %}
<p> No colleges available </p>
{% endif %}

观点:

from django.shortcuts import get_object_or_404, render
from .models import College
# Create your views here.
def index(request):
    latest_college_list = College.objects.order_by('college_name')
    context = {'latest_college_list': latest_college_list}
    return render(request, 'app/index.html', context)
def detail(request, college_id):
    college = get_object_or_404(College, pk=college_id)
    return render(request, 'app/detail.html', {'college':college})

urls.py:

from django.conf.urls import url
from . import views
app_name = "app"
urlpatterns = [
    # campusarchitecture.com/
    url(r'^$', views.index, name="index"),
    # /college_name
    url(r'^(?P<college_id>[0-9]+)/$', views.detail, name="detail")
]

根网址会议:

from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
    url(r'^$', include('app.urls')),
    url(r'^login/$', include('login.urls')),
    url(r'^admin/', admin.site.urls),
]

有人知道问题是什么吗?

这是问题所在:

url(r'^$', include('app.urls')),

应该是

url(r'^', include('app.urls', namespace="app")),

请注意,应删除$,因为它指示正则表达式模式的结束,并且不会发现包含的 url 模式。

其次,您需要在include中明确指定namespace。有关此内容的更多信息,请参阅此处的文档中。

同样,在login/ URL 模式匹配后删除$

相关内容

最新更新