我是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>
帮我解决这个问题,请提供解释。
答案 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 %}