python - Django:找不到页面

python - Django : Page Not found

我环顾四周,找不到真正解决我的问题的方法。这是 django 抛出的错误。当在我的主页上有一个 link 视图时,会抛出此错误,单击该视图应将您定向到所述 link.

的详细视图
Using the URLconf defined in untitled.urls, Django tried these URL patterns, in this order:

    ^$
    ^index/ ^$ [name='index']
    ^index/ ^(?P<distro_id>[0-9]+)/$ [name='distro_id'] 
    ^admin/

The current URL, index//, didn't match any of these.

据我所知,我不明白为什么会抛出此错误。

这是我的 urls.py

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

我的index/urls.py

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


urlpatterns = [
    # /index/
    url(r'^$', views.index, name='index'),

    #/distro/123/
    url(r'^(?P<distro_id>[0-9]+)/$', views.detail, name='distro_id'),

]

我的views.py

from django.shortcuts import get_object_or_404, render
from django.template import loader, RequestContext
from django.http import Http404
from .models import Distros


def index(request):
    all_distros = Distros.objects.all()
    context = {'all_distros': all_distros, }
    return render(request, 'index/index.html', context)


def detail(request, distro_id,):
    distro_id = get_object_or_404 (Distros, pk=distro_id)
    return render(request, 'index/detail.html', {'distro_id': distro_id})

模板代码:

    {% extends 'index/base.html' %}

{% block body %}
<ul>
    {% for distro in all_distros %}
        <li><a href="/index/{{ distro_id }}/">{{ index.distro_id }}</a></li>
    {% endfor %}
</ul>
{% endblock %}

我相信这些都是相关文件。我相信一切都设置正确,所以我不确定为什么会抛出错误。我确定我错过了一些我只是忽略的简单内容。

请不要使用硬编码 URL,因为在您的情况下它们很容易出错。而不是:

<a href="/index/{{ index.distro.id }}/">

url 模板标签与您的命名空间 (index) 和视图名称 (distro_id) 结合使用:

<a href="{% url 'index:distro_id' index.id %}">

请注意,index.distro.id 也有错误,因为 index 实际上是一个 Distros 对象。它有一个 id 字段,但没有 distro.id.