【问题标题】:Django Noreverse Error for below code以下代码的 Django Norreverse 错误
【发布时间】:2017-10-18 06:53:05
【问题描述】:

我正在尝试将搜索导航栏设置为在我的网站上工作,但我不断收到此错误,我不解码。

我在 Python 2.7 上使用 django 1.8

我的模板 html 文件如下。

<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="{% url 'home' %}">Home</a></li>
<form class="navbar-form navbar-left" method="GET" role="search" action="{% url 'product' %}">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" name="q" value='{{ request.GET.q }}'>
</div>
</form>

我的整体网址文件如下。

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin


urlpatterns = [
    # Examples:
    url(r'^$', 'newsletter.views.home', name='home'),
    url(r'^contact/$', 'newsletter.views.contact', name='contact'),
    url(r'^about/$', 'ecommerse2.views.about', name='about'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^product/', include('product.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^accounts/', include('registration.backends.default.urls')),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我的本​​地应用网址如下。

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from .views import ProductDetailView, ProductListView
urlpatterns = [
    # Examples:
    url(r'^$', ProductListView.as_view(), name='Class_based_List_vie'),
    url(r'^(?P<pk>\d+)/$', ProductDetailView.as_view(), name='Class_based_vie'),
    #url(r'^(?P<id>\d+)', 'product.views.product_det_vie_func', name='Detail_view_func'),
]

对于上面的代码,突出显示以下行并出现 404 错误 未找到 /product/ 处的 NoReverseMatch 和带有参数“()”和关键字参数“{}”的“产品”的反向。尝试了 0 个模式:[]。

<form class="navbar-form navbar-left" method="GET" role="search" action="{% url 'product' %}">

请帮我纠正上述错误。

提前致谢

【问题讨论】:

    标签: django django-templates django-views


    【解决方案1】:

    问题是由于您没有任何名称为 "product" 的 url。

    如果您尝试从“Class_based_List_vie”视图中搜索产品,您应该在模板中包含这样的 url 标签,{% url 'Class_based_List_vie' %}

    在模板中,url 的名称包含在 url 标记中,而不是 url 本身。 如果您使用多个应用程序,那么强烈建议使用命名空间 url。

    如果你能分享视图,那对调试会更有帮助。

    【讨论】:

    • 感谢您的及时回复。它现在正在工作。
    • 那么,你能把答案标记为选中吗?
    【解决方案2】:

    URL 解析器需要 pk 参数。试试:

    action="{% url 'product' pk=product.id %}"
    

    product 必须从视图传递给模板渲染器

    【讨论】:

    • 感谢您的及时回复。在编辑该行时,我遇到了同样的错误。NoReverseMatch 在 /product/ Reverse 处为带有参数“()”和关键字参数“{u'pk”:“'}”的“产品”反向。尝试了 0 个模式:[]
    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 2021-04-05
    • 2018-11-19
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多