在/ polls / top / NoReverseMatch为什么我不能使用<int:pk>?

时间:2018-03-24 14:52:53

标签: python django

我在views.py中写道

from django.shortcuts import render

from .models import Polls
def top(request):
    data = Polls.objects.order_by('-created_at')
    return render(request,'index.html',{'data':data})

def detail(request):
    data = Polls.objects.order_by('-created_at')
    return render(request,'detail.html',{'data':data})
在urls.py中

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

urlpatterns=[
    url('top/', views.top, name='top'),
    url('detail/<int:pk>/', views.top,name='detail'),
]
index.html中的

<main>
            {% for item in data %}
                            <h2>{{ item.title }}</h2>
                            <a href="{% url 'detail' item.pk %}">SHOW DETAIL
</a>

            {% endfor %}
</main>

在models.py

from django.db import models

class Polls(models.Model):
    title = models.CharField(max_length=100)
    detail = models.TextField()

当我访问top方法时, 在/ app / top /的NoReverseMatch 反转&#39;详细信息&#39;参数&#39;(1,)&#39;未找到。尝试了1种模式:[&#39;民意调查/详细信息//&#39;]错误发生。我想我可以通过item.pk访问对象的号码,但是它错了吗?我重写了{{ 1}}但是同样的错误发生了。我该如何解决这个问题?我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

您已创建了应用,例如它的名字是&#39; myapp&#39;并且您为应用指定了一些网址

url(r'^myapp/', include('myapp.urls', namespace='myapp', app_name='myapp'))

因此,当您想要调用此应用程序中的某个网址时,您应该将其称为

<a href="{% url 'myapp:detail' item.pk %}">SHOW DETAIL </a>