【发布时间】:2018-10-10 10:00:02
【问题描述】:
当尝试单击按钮重定向到 getonboard.html 时,我收到以下错误:
django.urls.exceptions.NoReverseMatch: Reverse for 'getonboard' not found. 'getonboard' is not a valid view function or pattern name.
artdb/urls.py:
path('getonboard/',views.getonboard,name='getonboard'),
模板/artdb/base.html:
<p><a class="btn btn-primary btn-lg" href="{% url 'getonboard' %}" role="button">Get onboard »</a></p>
artdb/views.py:
def getonboard(request):
return render(request,'artdb/getonboard.html')
模板/artdb/getonboard.html:
{% extends "artdb/base.html" %}
{% block content %}
<h2>getonboard template</h2>
<p>this is the getonboard text</p>
{% endblock content %}
完整的主 urls.py:
"""winmalist URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('artdb/', include('artdb.urls')),
path('admin/', admin.site.urls),
]+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
完整的 artdb/urls.py:
from django.urls import path
from django.views.generic import TemplateView
from artdb.views import PersonList
from . import views
app_name='artdb'
urlpatterns = [
# path('base/',views.base,name='base.html'),
path('getonboard/',views.getonboard,name='getonboard'),
path('index/',views.index,name='index'),
path('persons/',PersonList.as_view()),
path('',TemplateView.as_view(template_name='artdb/base.html')),
path('test2',TemplateView.as_view(template_name='artdb/test2.html')),
# path('', views.IndexView.as_view(), name='index'),
# path('contract', views.contract, name='contract'),
# path('<int:person_id>/test1/', views.test1, name='test1'),
]
有什么想法吗?
【问题讨论】:
-
artdb.urls 是否包含在主 urls.py 文件中?您在 artdb/urls.py 文件中有一行
app_name = artdb吗?我只能猜测您的 URL 可能是命名空间的。向我们展示整个 artdb/urls.py 文件并向我们展示您的主 urls.py 文件。 -
添加了完整的 urls.py
-
您的网址是命名空间的,因为您添加了
app_name = 'artdb'。因此,您在应用程序artdb中的所有网址都以artdb:开头,例如artdb:getonboard和artdb:index.
标签: python django url routing match