以下代码

时间:2017-05-18 12:41:30

标签: django django-templates django-views

我正在尝试将搜索导航栏设置为在我的网站上运行,但我一直收到此错误,我不会解码。

我在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和没有找到参数'()'和关键字参数'{}'的'product'的反向。尝试了0种模式:[]。

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

请帮我纠正上述错误。

提前致谢

2 个答案:

答案 0 :(得分:0)

网址解析器期待pk参数。尝试:

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

product必须从视图

传递给模板渲染器

答案 1 :(得分:0)

问题是由于您没有任何名称为&#34;产品&#34; 的网址。

如果您尝试从视图&#34; Class_based_List_vie&#34;中搜索产品,则应在模板中包含url标记,如{% url 'Class_based_List_vie' %}

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

如果你可以分享观点,那么调试会更有帮助。