2017-07-20 110 views
1

我制作了一个包含培训师列表的应用程序。我的索引视图从数据库中显示这些教练配置文件。我打算实施一个搜索栏来过滤这些结果。我不明白我做错了什么。当我提到的网址在搜索的作用,发挥反向匹配错误Django:Url无法解析

url's.py:在我的基本模板

 #/trainer/ 
url(r'^$', views.IndexView.as_view(),name='index'), 

#/trainer/<trainer_id>/ 
url(r'^(?P<pk>[0-9]+)/$',views.DetailView.as_view(),name='details'), 

#/trainer/trainer/add 
url(r'trainer/add/$', views.TrainerCreate.as_view(), name='Trainer-add'), 

#/trainer/trainer/<album_id> 
url(r'trainer/(?P<pk>[0-9]+)/$', views.TrainerUpdate.as_view(), name='Trainer-update'), 

#/trainer/trainer/add 
url(r'trainer/(?P<pk>[0-9]+)/delete/$', views.TrainerDelete.as_view(), name='Trainer-delete'), 


url(r'^search/$', views.search, name='Search'), 

views.py

def search(request): 
    query = request.GET['q'] 
    trainer= Trainer.objects.filter(name__icontains=query) 
    return render(request,'trainer/index.html', {'trainer': trainer}) 

搜索表单

<form class="navbar-form navbar-left" method="get" action="{% url 'trainer:Search' %}"> 
      <div class="form-group"> 
       <input type="text" id="searchBox" class="input-medium search-query" name="q" placeholder="Search"> 
      </div> 
      <button type="submit" class="btn btn-default">Search</button> 
    </form> 

index.py

<table style="width:100%" class="table table-hover"> 
          <tr> 
           <th>#</th> 
           <th>Name</th> 
           <th>Technology</th> 
           <th>Location</th> 
          </tr> 
          {% for trainer in all_trainers %} 
           <tr> 
            <td><input type="checkbox" id="trainer{{ forloop.counter }}" name="trainer" value="{{ trainer.id }}"></td> 
            <td> <a href="{% url 'trainer:details' trainer.id %}"> {{ trainer.name }}</td> 
            <td>{{ trainer.technology }}</td></a> 

            <!-- View Details --> 
            <td><a href="{% url 'trainer:details' trainer.id %}" class="btn btn-primary btn-sm">View Details</a></td> 

            <td><a href="../media/{{ trainer.trainer_profile }}" class="btn">Download PDF</a></td> 

            <!-- Delete Album --> 
            <td> 
             <form action="{% url 'trainer:Trainer-delete' trainer.id %}" method="post"> 
             {% csrf_token %} 
             <input type="hidden" name="trainer_id" value="{{ trainer.id }}" /> 
             <button type="submit" class="btn btn-default btn-sm"> 
              <span class="glyphicon glyphicon-trash"></span> 
             </button> 
             </form> 
            </td> 
           </tr> 
          {% endfor %} 
         </table> 
+0

你是问题不是“搜索不工作”,但你的网址没有解决。你应该编辑你的帖子标题... –

+0

好吧..所以你有解决方案吗? –

回答

0

改变这一行

<form class="navbar-form navbar-left" method="get" action="{% url 'trainer:Search' %}"> 

<form class="navbar-form navbar-left" method="get" action="{% url 'Search' %}"> 
+0

试过这个。仍然显示此错误:NoReverseMatch在/教练员/ –

+0

发布您正在使用的模板/培训师/网址 – Exprator

+0

发布您的模板为IndexView和视图代码 – Exprator

1

你需要{% url 'Search' %}而不是{% url 'trainer:Search' %}; :适用于您有namespaced your urls

+0

试过这个。仍显示此错误: NoReverseMatch at/trainer/ –

+0

您是否重新启动服务器?你能否在你的问题中发布完整的错误信息? –

+0

雅我重新启动。不工作: 例外值:\t 未找到''参数'()'和关键字参数'{}'的'Search'反转。 0模式尝试:[] –

0

你是否在某个地方包含了urls.py?

否则,您需要在正则表达式的开头添加插入符号^。

url(r'^trainer/search/$', views.search, name='Search'), 
+0

是啊显然即时通讯包括它的主要网址。休息都在工作。 –