父应用名称为mysite,子应用名称为polls。我用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'),
]在父应用的urls.py中
from django.contrib import admin
from django.conf.urls import url,include
app_name = 'polls'
urlpatterns = [
url('admin/', admin.site.urls),
url('polls/', include('polls.urls')),
]在index.html中
<main>
{% for item in data %}
<h2>{{ item.title }}</h2>
<a href="{% url 'polls:detail' item.pk %}">SHOW DETAIL
</a>
{% endfor %}
</main>当我访问top方法时,在/ NoReverseMatch /top/ 'polls‘处的投票不是一个注册的名称空间错误。我使用的是Django 2.0,所以我认为名称空间不能使用。我写了app_name,所以我真的不能理解为什么要修复这个错误happens.How ?我的代码中有什么问题?
发布于 2018-03-25 13:18:15
var app_name应该在polls.urls中,而不是在urls.py父文件中。另外,如果您想使用Django提供的新路由,请记住添加path模块:
from django.urls import path
path('detail/<int:pk>/', views.top,name='detail'),如果您使用的是url模块,请检查此选项,并注意您使用的https://docs.djangoproject.com/en/2.0/topics/http/urls/的版本
https://stackoverflow.com/questions/49471763
复制相似问题