错误:
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 模式匹配后删除$
。