为什么我在Django URL中遇到此错误?

时间:2018-09-27 09:44:36

标签: django

enter image description here我是Django的新手,仍然尝试了解大多数内容。我目前正在一个项目中,我需要为每个链接添加一个详细信息页面。 但是我收到以下错误。 错误:

NoReverseMatch at /discover/

Reverse for 'disc-details' with arguments '('',)' not found. 1 pattern(s) tried: ['discover/(?P<discover_id>[0-9]+)/']

以下是我的应用网址格式:

url(r'discover/$', views.discover, name = 'discover'),
url(r'discover/(?P<discover_id>[0-9]+)/', views.disc_details, name = 'disc-details'),

和我的views.py看起来像:

def discover(request):
    disc = Discover.objects.all()
    return render(request, 'main/discover.html', {'disc': disc})

def disc_details(request, discover_id):
    dis = get_object_or_404(Discover, pk = discover_id)
    det = Discover.objects.get(pk = discover_id)
    return render(request, 'main/discDetails.html', {'det': det, 'dis': dis})

这里发生的是发现一个HTML页面,其中包含各种链接,并且每个链接的disc_details部分都应具有其链接。 我的html部分包含以下内容:

<a class="btn btn-success" href='{% url 'main:disc-details' dis.id%}' class = "detail-link">Details</a>

帮我解决这个问题,请提供解释。

1 个答案:

答案 0 :(得分:1)

您的上下文变量名称为disc

def discover(request):
    disc = Discover.objects.all()
    return render(request, 'main/discover.html', {'disc': disc})

因此,您还应该在disc模板中使用discover.html。请注意,您应该遍历disc值以获取光盘对象:

{% for el in disc %}
    '{% url 'main:disc-details' el.id %}'
{% endfor %}